Merge branch 'dev' of https://github.com/oxen-io/session-ios into unsend-message
This commit is contained in:
commit
5f2890a1fc
|
@ -468,6 +468,15 @@ extension ConversationVC : InputViewDelegate, MessageCellDelegate, ContextMenuAc
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
func handleViewItemSwiped(_ viewItem: ConversationViewItem, state: SwipeState) {
|
||||
switch state {
|
||||
case .began:
|
||||
messagesTableView.isScrollEnabled = false
|
||||
case .ended, .cancelled:
|
||||
messagesTableView.isScrollEnabled = true
|
||||
}
|
||||
}
|
||||
|
||||
func showFailedMessageSheet(for tsMessage: TSOutgoingMessage) {
|
||||
let thread = self.thread
|
||||
|
|
|
@ -1,5 +1,11 @@
|
|||
import UIKit
|
||||
|
||||
public enum SwipeState {
|
||||
case began
|
||||
case ended
|
||||
case cancelled
|
||||
}
|
||||
|
||||
class MessageCell : UITableViewCell {
|
||||
weak var delegate: MessageCellDelegate?
|
||||
var viewItem: ConversationViewItem? { didSet { update() } }
|
||||
|
@ -55,6 +61,7 @@ protocol MessageCellDelegate : AnyObject {
|
|||
func handleViewItemLongPressed(_ viewItem: ConversationViewItem)
|
||||
func handleViewItemTapped(_ viewItem: ConversationViewItem, gestureRecognizer: UITapGestureRecognizer)
|
||||
func handleViewItemDoubleTapped(_ viewItem: ConversationViewItem)
|
||||
func handleViewItemSwiped(_ viewItem: ConversationViewItem, state: SwipeState)
|
||||
func showFullText(_ viewItem: ConversationViewItem)
|
||||
func openURL(_ url: URL)
|
||||
func handleReplyButtonTapped(for viewItem: ConversationViewItem)
|
||||
|
|
|
@ -475,9 +475,12 @@ final class VisibleMessageCell : MessageCell, LinkPreviewViewDelegate {
|
|||
}
|
||||
|
||||
@objc private func handlePan(_ gestureRecognizer: UIPanGestureRecognizer) {
|
||||
guard let viewItem = viewItem else { return }
|
||||
let viewsToMove = [ bubbleView, profilePictureView, replyButton, timerView, messageStatusImageView ]
|
||||
let translationX = gestureRecognizer.translation(in: self).x.clamp(-CGFloat.greatestFiniteMagnitude, 0)
|
||||
switch gestureRecognizer.state {
|
||||
case .began:
|
||||
delegate?.handleViewItemSwiped(viewItem, state: .began)
|
||||
case .changed:
|
||||
// The idea here is to asymptotically approach a maximum drag distance
|
||||
let damping: CGFloat = 20
|
||||
|
@ -495,8 +498,10 @@ final class VisibleMessageCell : MessageCell, LinkPreviewViewDelegate {
|
|||
previousX = translationX
|
||||
case .ended, .cancelled:
|
||||
if abs(translationX) > VisibleMessageCell.swipeToReplyThreshold {
|
||||
delegate?.handleViewItemSwiped(viewItem, state: .ended)
|
||||
reply()
|
||||
} else {
|
||||
delegate?.handleViewItemSwiped(viewItem, state: .cancelled)
|
||||
resetReply()
|
||||
}
|
||||
default: break
|
||||
|
|
|
@ -194,7 +194,7 @@ static NSTimeInterval launchStartedAt;
|
|||
mainWindow.rootViewController = [LoadingViewController new];
|
||||
[mainWindow makeKeyAndVisible];
|
||||
|
||||
LKAppMode appMode = [NSUserDefaults.standardUserDefaults integerForKey:@"appMode"];
|
||||
LKAppMode appMode = [self getAppModeOrSystemDefault];
|
||||
[self setCurrentAppMode:appMode];
|
||||
|
||||
if (@available(iOS 11, *)) {
|
||||
|
@ -245,7 +245,7 @@ static NSTimeInterval launchStartedAt;
|
|||
|
||||
[self ensureRootViewController];
|
||||
|
||||
LKAppMode appMode = [NSUserDefaults.standardUserDefaults integerForKey:@"appMode"];
|
||||
LKAppMode appMode = [self getCurrentAppMode];
|
||||
[self setCurrentAppMode:appMode];
|
||||
|
||||
[AppReadiness runNowOrWhenAppDidBecomeReady:^{
|
||||
|
|
|
@ -40,4 +40,20 @@ extension AppDelegate {
|
|||
@objc func stopClosedGroupPoller() {
|
||||
ClosedGroupPoller.shared.stop()
|
||||
}
|
||||
|
||||
@objc func getAppModeOrSystemDefault() -> AppMode {
|
||||
let userDefaults = UserDefaults.standard
|
||||
|
||||
guard userDefaults.dictionaryRepresentation().keys.contains("appMode") else {
|
||||
if #available(iOS 13.0, *) {
|
||||
return UITraitCollection.current.userInterfaceStyle == .dark ? .dark : .light
|
||||
} else {
|
||||
return .light
|
||||
}
|
||||
}
|
||||
|
||||
let mode = userDefaults.integer(forKey: "appMode")
|
||||
return AppMode(rawValue: mode) ?? .light
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue