From dbcc158337163edaf8da4f8cf48435b3c273f8e9 Mon Sep 17 00:00:00 2001 From: ryanzhao Date: Wed, 27 Oct 2021 13:51:19 +1100 Subject: [PATCH 1/6] fix unsend bugs --- .../MessageReceiver+Handling.swift | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift b/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift index 74103fc2f..5e9f987d9 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift @@ -231,12 +231,12 @@ extension MessageReceiver { // MARK: - Unsend Requests public static func handleUnsendRequest(_ message: UnsendRequest, using transaction: Any) { - guard message.sender == message.author else { return } let userPublicKey = getUserHexEncodedPublicKey() + guard message.sender == message.author || userPublicKey == message.sender else { return } let transaction = transaction as! YapDatabaseReadWriteTransaction if let author = message.author, let timestamp = message.timestamp { let localMessage: TSMessage? - if userPublicKey == message.sender { + if userPublicKey == author { localMessage = TSOutgoingMessage.find(withTimestamp: timestamp) } else { localMessage = TSIncomingMessage.find(withAuthorId: author, timestamp: timestamp, transaction: transaction) @@ -249,10 +249,14 @@ extension MessageReceiver { UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: [notificationIdentifier]) } } - if let serverHash = messageToDelete.serverHash { - SnodeAPI.deleteMessage(publicKey: author, serverHashes: [serverHash]).retainUntilComplete() + if author == message.sender { + if let serverHash = messageToDelete.serverHash { + SnodeAPI.deleteMessage(publicKey: author, serverHashes: [serverHash]).retainUntilComplete() + } + messageToDelete.updateForDeletion(with: transaction) + } else { + messageToDelete.remove(with: transaction) } - messageToDelete.updateForDeletion(with: transaction) } } } @@ -323,10 +327,12 @@ extension MessageReceiver { if isMainAppAndActive { cancelTypingIndicatorsIfNeeded(for: message.sender!) } - // Keep track of the open group server message ID ↔ message ID relationship - if let serverID = message.openGroupServerMessageID, let tsMessage = TSMessage.fetch(uniqueId: tsMessageID, transaction: transaction) { - tsMessage.openGroupServerMessageID = serverID - tsMessage.save(with: transaction) + if let tsMessage = TSMessage.fetch(uniqueId: tsMessageID, transaction: transaction) { + // Keep track of the open group server message ID ↔ message ID relationship + if let serverID = message.openGroupServerMessageID { tsMessage.openGroupServerMessageID = serverID } + // Keep track of server hash + if let serverHash = message.serverHash { tsMessage.serverHash = serverHash } + tsMessage.save(with: transaction) } if let tsOutgoingMessage = TSMessage.fetch(uniqueId: tsMessageID, transaction: transaction) as? TSOutgoingMessage, let thread = TSThread.fetch(uniqueId: threadID, transaction: transaction) { From 365231f30996ec118ca0e7fa549ce924e44ba76d Mon Sep 17 00:00:00 2001 From: ryanzhao Date: Wed, 27 Oct 2021 13:51:56 +1100 Subject: [PATCH 2/6] update build number --- Session.xcodeproj/project.pbxproj | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Session.xcodeproj/project.pbxproj b/Session.xcodeproj/project.pbxproj index 7612a87aa..65323a6ce 100644 --- a/Session.xcodeproj/project.pbxproj +++ b/Session.xcodeproj/project.pbxproj @@ -5049,7 +5049,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 305; + CURRENT_PROJECT_VERSION = 306; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; @@ -5122,7 +5122,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 305; + CURRENT_PROJECT_VERSION = 306; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = SUQ8J2PCT7; ENABLE_NS_ASSERTIONS = NO; @@ -5188,7 +5188,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 305; + CURRENT_PROJECT_VERSION = 306; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; @@ -5262,7 +5262,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 305; + CURRENT_PROJECT_VERSION = 306; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = SUQ8J2PCT7; ENABLE_NS_ASSERTIONS = NO; @@ -6198,7 +6198,7 @@ CODE_SIGN_ENTITLEMENTS = Session/Meta/Signal.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 305; + CURRENT_PROJECT_VERSION = 306; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -6269,7 +6269,7 @@ CODE_SIGN_ENTITLEMENTS = Session/Meta/Signal.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 305; + CURRENT_PROJECT_VERSION = 306; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", From e49431d2eb5f9c7996d31e069032a6d949a15f9c Mon Sep 17 00:00:00 2001 From: ryanzhao Date: Mon, 15 Nov 2021 16:47:12 +1100 Subject: [PATCH 3/6] fix transaction crash --- SessionMessagingKit/Database/Storage+Messaging.swift | 1 + SessionMessagingKit/Sending & Receiving/MessageSender.swift | 4 ---- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/SessionMessagingKit/Database/Storage+Messaging.swift b/SessionMessagingKit/Database/Storage+Messaging.swift index e02363de7..0035217f2 100644 --- a/SessionMessagingKit/Database/Storage+Messaging.swift +++ b/SessionMessagingKit/Database/Storage+Messaging.swift @@ -28,6 +28,7 @@ extension Storage { let thread = TSThread.fetch(uniqueId: threadID, transaction: transaction) else { return nil } let tsMessage: TSMessage if message.sender == getUserPublicKey() { + if let _ = TSOutgoingMessage.find(withTimestamp: message.sentTimestamp!) { return nil } let tsOutgoingMessage = TSOutgoingMessage.from(message, associatedWith: thread, using: transaction) var recipients: [String] = [] if let syncTarget = message.syncTarget { diff --git a/SessionMessagingKit/Sending & Receiving/MessageSender.swift b/SessionMessagingKit/Sending & Receiving/MessageSender.swift index d32b07681..50dee4be5 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageSender.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageSender.swift @@ -116,8 +116,6 @@ public final class MessageSender : NSObject { if message.sentTimestamp == nil { // Visible messages will already have their sent timestamp set message.sentTimestamp = NSDate.millisecondTimestamp() } - // Ignore future self-sends - Storage.shared.addReceivedMessageTimestamp(message.sentTimestamp!, using: transaction) message.sender = userPublicKey switch destination { case .contact(let publicKey): message.recipient = publicKey @@ -268,8 +266,6 @@ public final class MessageSender : NSObject { if message.sentTimestamp == nil { // Visible messages will already have their sent timestamp set message.sentTimestamp = NSDate.millisecondTimestamp() } - // Ignore future self-sends - Storage.shared.addReceivedMessageTimestamp(message.sentTimestamp!, using: transaction) message.sender = storage.getUserPublicKey() switch destination { case .contact(_): preconditionFailure() From 13b7b1edb68d42bb8f4dc7f314d6218f7666b570 Mon Sep 17 00:00:00 2001 From: ryanzhao Date: Tue, 16 Nov 2021 10:36:31 +1100 Subject: [PATCH 4/6] Keep screen on when recording voice message --- Session/Conversations/ConversationVC+Interaction.swift | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Session/Conversations/ConversationVC+Interaction.swift b/Session/Conversations/ConversationVC+Interaction.swift index 90807940f..809d9f165 100644 --- a/Session/Conversations/ConversationVC+Interaction.swift +++ b/Session/Conversations/ConversationVC+Interaction.swift @@ -762,6 +762,8 @@ extension ConversationVC : InputViewDelegate, MessageCellDelegate, ContextMenuAc requestMicrophonePermissionIfNeeded() { [weak self] in self?.cancelVoiceMessageRecording() } + // Keep screen on + UIApplication.shared.isIdleTimerDisabled = false guard AVAudioSession.sharedInstance().recordPermission == .granted else { return } // Cancel any current audio playback audioPlayer?.stop() @@ -810,6 +812,7 @@ extension ConversationVC : InputViewDelegate, MessageCellDelegate, ContextMenuAc } func endVoiceMessageRecording() { + UIApplication.shared.isIdleTimerDisabled = true // Hide the UI snInputView.hideVoiceMessageUI() // Cancel the timer From 2cb006c3e485792d747bc0e3fbc5eb1bad5ff2c1 Mon Sep 17 00:00:00 2001 From: Ryan Zhao Date: Wed, 17 Nov 2021 11:14:13 +1100 Subject: [PATCH 5/6] Fix image orientation --- Session/Media Viewing & Editing/PhotoCapture.swift | 6 +++++- .../Image Editing/ImageEditorCanvasView.swift | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Session/Media Viewing & Editing/PhotoCapture.swift b/Session/Media Viewing & Editing/PhotoCapture.swift index 6c0eda63b..64d7ed650 100644 --- a/Session/Media Viewing & Editing/PhotoCapture.swift +++ b/Session/Media Viewing & Editing/PhotoCapture.swift @@ -593,7 +593,11 @@ class PhotoCaptureOutputAdaptee: NSObject, ImageCaptureOutput { @available(iOS 11.0, *) func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) { - let data = photo.fileDataRepresentation()! + var data = photo.fileDataRepresentation()! + // Call normalized here to fix the orientation + if let srcImage = UIImage(data: data) { + data = srcImage.normalized().jpegData(compressionQuality: 1.0)! + } DispatchQueue.main.async { self.delegate?.captureOutputDidFinishProcessing(photoData: data, error: error) } diff --git a/SignalUtilitiesKit/Media Viewing & Editing/Image Editing/ImageEditorCanvasView.swift b/SignalUtilitiesKit/Media Viewing & Editing/Image Editing/ImageEditorCanvasView.swift index 92e4f93c1..12fae43f5 100644 --- a/SignalUtilitiesKit/Media Viewing & Editing/Image Editing/ImageEditorCanvasView.swift +++ b/SignalUtilitiesKit/Media Viewing & Editing/Image Editing/ImageEditorCanvasView.swift @@ -166,7 +166,7 @@ public class ImageEditorCanvasView: UIView { // of code simplicity. We could modify the image layer's // transform to handle the normalization, which would // have perf benefits. - return srcImage.normalized() + return srcImage } // MARK: - Content From 67d9dcfa005d9c5f395af59e37ce7fbcabee28e5 Mon Sep 17 00:00:00 2001 From: Ryan Zhao Date: Fri, 19 Nov 2021 16:54:26 +1100 Subject: [PATCH 6/6] update .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 21c390b4b..36979ca27 100644 --- a/.gitignore +++ b/.gitignore @@ -27,6 +27,7 @@ DerivedData *.ipa *.xcuserstate Index/ +Session-Turn-Server # CocoaPods Pods