From 8dac8a9ae4aad4124b5ae0e50e590c1630000213 Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Thu, 29 Jul 2021 13:21:31 +1000 Subject: [PATCH 01/16] Fix copy --- .../Settings/OWSConversationSettingsViewController.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Session/Conversations/Settings/OWSConversationSettingsViewController.m b/Session/Conversations/Settings/OWSConversationSettingsViewController.m index 4f54af7c5..3d303ca9d 100644 --- a/Session/Conversations/Settings/OWSConversationSettingsViewController.m +++ b/Session/Conversations/Settings/OWSConversationSettingsViewController.m @@ -546,7 +546,7 @@ CGFloat kIconViewLength = 24; [topRow autoPinEdgesToSuperviewMarginsExcludingEdge:ALEdgeBottom]; UILabel *subtitleLabel = [UILabel new]; - subtitleLabel.text = NSLocalizedString(@"When enabled, only messages mentioned you will be notified.", @""); + subtitleLabel.text = NSLocalizedString(@"vc_conversation_settings_notify_for_mentions_only_explanation", @""); subtitleLabel.textColor = LKColors.text; subtitleLabel.font = [UIFont systemFontOfSize:LKValues.smallFontSize]; subtitleLabel.numberOfLines = 0; From 9565358b5573b608d0c6586704da59ebc0f88d01 Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Thu, 29 Jul 2021 13:24:06 +1000 Subject: [PATCH 02/16] Increase scroll to bottom margin --- Session/Conversations/ConversationVC.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Session/Conversations/ConversationVC.swift b/Session/Conversations/ConversationVC.swift index ab678dec6..439394502 100644 --- a/Session/Conversations/ConversationVC.swift +++ b/Session/Conversations/ConversationVC.swift @@ -150,7 +150,7 @@ final class ConversationVC : BaseVC, ConversationViewModelDelegate, OWSConversat /// The button will be invisible until the user has scrolled at least this amount from the bottom of the table view. static let scrollButtonNoVisibilityThreshold: CGFloat = 20 /// Automatically scroll to the bottom of the conversation when sending a message if the scroll distance from the bottom is less than this number. - static let scrollToBottomMargin: CGFloat = 40 + static let scrollToBottomMargin: CGFloat = 60 // MARK: Lifecycle init(thread: TSThread, focusedMessageID: String? = nil) { From 86ab6c03eb6c33dd9ba1fd3373fd7dbf7a09f54b Mon Sep 17 00:00:00 2001 From: Ryan Zhao Date: Fri, 30 Jul 2021 09:20:56 +1000 Subject: [PATCH 03/16] use single pdf for image assets --- .../NotifyMentions.imageset/Contents.json | 15 ++------------- .../ic_notification_mentions-1.png | Bin 2527 -> 0 bytes .../ic_notification_mentions-2.png | Bin 2527 -> 0 bytes .../ic_notification_mentions.png | Bin 2527 -> 0 bytes .../ic_notifications_mentions.pdf | Bin 0 -> 1599 bytes 5 files changed, 2 insertions(+), 13 deletions(-) delete mode 100644 Session/Meta/Images.xcassets/Session/NotifyMentions.imageset/ic_notification_mentions-1.png delete mode 100644 Session/Meta/Images.xcassets/Session/NotifyMentions.imageset/ic_notification_mentions-2.png delete mode 100644 Session/Meta/Images.xcassets/Session/NotifyMentions.imageset/ic_notification_mentions.png create mode 100644 Session/Meta/Images.xcassets/Session/NotifyMentions.imageset/ic_notifications_mentions.pdf diff --git a/Session/Meta/Images.xcassets/Session/NotifyMentions.imageset/Contents.json b/Session/Meta/Images.xcassets/Session/NotifyMentions.imageset/Contents.json index 60527f39d..87de6e895 100644 --- a/Session/Meta/Images.xcassets/Session/NotifyMentions.imageset/Contents.json +++ b/Session/Meta/Images.xcassets/Session/NotifyMentions.imageset/Contents.json @@ -1,19 +1,8 @@ { "images" : [ { - "filename" : "ic_notification_mentions.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "ic_notification_mentions-1.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "ic_notification_mentions-2.png", - "idiom" : "universal", - "scale" : "3x" + "filename" : "ic_notifications_mentions.pdf", + "idiom" : "universal" } ], "info" : { diff --git a/Session/Meta/Images.xcassets/Session/NotifyMentions.imageset/ic_notification_mentions-1.png b/Session/Meta/Images.xcassets/Session/NotifyMentions.imageset/ic_notification_mentions-1.png deleted file mode 100644 index fe39a8b3566e28a7e49d515e69bfe566a6311dc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2527 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 UDKNa?u8^eU3M?WbDP4>G2YGc2X#fBK literal 0 HcmV?d00001 From 8f29010e89f0525b9007b1b7461eb18c2334392c Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Fri, 30 Jul 2021 09:23:56 +1000 Subject: [PATCH 04/16] Poll for closed group messages more frequently --- .../Sending & Receiving/Pollers/ClosedGroupPoller.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SessionMessagingKit/Sending & Receiving/Pollers/ClosedGroupPoller.swift b/SessionMessagingKit/Sending & Receiving/Pollers/ClosedGroupPoller.swift index 2765b541a..025af2aba 100644 --- a/SessionMessagingKit/Sending & Receiving/Pollers/ClosedGroupPoller.swift +++ b/SessionMessagingKit/Sending & Receiving/Pollers/ClosedGroupPoller.swift @@ -7,8 +7,8 @@ public final class ClosedGroupPoller : NSObject { private var timers: [String:Timer] = [:] // MARK: Settings - private static let minPollInterval: Double = 4 - private static let maxPollInterval: Double = 2 * 60 + private static let minPollInterval: Double = 2 + private static let maxPollInterval: Double = 30 // MARK: Error private enum Error : LocalizedError { From c4fafa132d7a14b0bceb89139f11059b5b620006 Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Fri, 30 Jul 2021 09:24:14 +1000 Subject: [PATCH 05/16] 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 4a10b9daf..094856b76 100644 --- a/Session.xcodeproj/project.pbxproj +++ b/Session.xcodeproj/project.pbxproj @@ -5063,7 +5063,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 279; + CURRENT_PROJECT_VERSION = 280; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; @@ -5132,7 +5132,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 279; + CURRENT_PROJECT_VERSION = 280; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = SUQ8J2PCT7; ENABLE_NS_ASSERTIONS = NO; @@ -5193,7 +5193,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 279; + CURRENT_PROJECT_VERSION = 280; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; @@ -5263,7 +5263,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 279; + CURRENT_PROJECT_VERSION = 280; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = SUQ8J2PCT7; ENABLE_NS_ASSERTIONS = NO; @@ -6148,7 +6148,7 @@ CODE_SIGN_ENTITLEMENTS = Session/Meta/Signal.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 279; + CURRENT_PROJECT_VERSION = 280; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -6216,7 +6216,7 @@ CODE_SIGN_ENTITLEMENTS = Session/Meta/Signal.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 279; + CURRENT_PROJECT_VERSION = 280; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", From 423feae4265a237c7eec9f0a68507484613db5f5 Mon Sep 17 00:00:00 2001 From: Ryan Zhao Date: Fri, 30 Jul 2021 09:43:05 +1000 Subject: [PATCH 06/16] add notify reply and clean --- Session/Notifications/AppNotifications.swift | 3 +-- SessionMessagingKit/Messages/Signal/TSIncomingMessage.h | 2 ++ SessionMessagingKit/Messages/Signal/TSIncomingMessage.m | 7 +++++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Session/Notifications/AppNotifications.swift b/Session/Notifications/AppNotifications.swift index 594430aeb..ce8f3ad91 100644 --- a/Session/Notifications/AppNotifications.swift +++ b/Session/Notifications/AppNotifications.swift @@ -168,8 +168,7 @@ public class NotificationPresenter: NSObject, NotificationsProtocol { // Don't fire the notification if the current user isn't mentioned // and isOnlyNotifyingForMentions is on. - let isUserMentioned = MentionUtilities.isUserMentioned(in: messageText ?? "") - if let groupThread = thread as? TSGroupThread, groupThread.isOnlyNotifyingForMentions && !isUserMentioned { + if let groupThread = thread as? TSGroupThread, groupThread.isOnlyNotifyingForMentions && !incomingMessage.isUserMentioned { return } diff --git a/SessionMessagingKit/Messages/Signal/TSIncomingMessage.h b/SessionMessagingKit/Messages/Signal/TSIncomingMessage.h index bb909b0fc..7cd8dd78b 100644 --- a/SessionMessagingKit/Messages/Signal/TSIncomingMessage.h +++ b/SessionMessagingKit/Messages/Signal/TSIncomingMessage.h @@ -16,6 +16,8 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, readonly) BOOL wasReceivedByUD; +@property (nonatomic, readonly) BOOL isUserMentioned; + - (instancetype)initMessageWithTimestamp:(uint64_t)timestamp inThread:(nullable TSThread *)thread messageBody:(nullable NSString *)body diff --git a/SessionMessagingKit/Messages/Signal/TSIncomingMessage.m b/SessionMessagingKit/Messages/Signal/TSIncomingMessage.m index 81bf7beb1..a7e004b93 100644 --- a/SessionMessagingKit/Messages/Signal/TSIncomingMessage.m +++ b/SessionMessagingKit/Messages/Signal/TSIncomingMessage.m @@ -13,6 +13,7 @@ #import "TSGroupThread.h" #import #import +#import NS_ASSUME_NONNULL_BEGIN @@ -121,6 +122,12 @@ NS_ASSUME_NONNULL_BEGIN return self.isExpiringMessage; } +- (BOOL)isUserMentioned +{ + NSString *userPublicKey = [SNGeneralUtilities getUserPublicKey]; + return (self.body != nil && [self.body containsString:[NSString stringWithFormat:@"@%@", userPublicKey]]) || (self.quotedMessage != nil && [self.quotedMessage.authorId isEqualToString:userPublicKey]); +} + #pragma mark - OWSReadTracking - (BOOL)shouldAffectUnreadCounts From 38a19ad2d165a89fbe253fcce8519004221a281b Mon Sep 17 00:00:00 2001 From: Ryan Zhao Date: Fri, 30 Jul 2021 09:45:28 +1000 Subject: [PATCH 07/16] don't add badge for messages with no mention --- SignalUtilitiesKit/Messaging/OWSMessageUtils.m | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/SignalUtilitiesKit/Messaging/OWSMessageUtils.m b/SignalUtilitiesKit/Messaging/OWSMessageUtils.m index 7c0e20575..09ab38cb6 100644 --- a/SignalUtilitiesKit/Messaging/OWSMessageUtils.m +++ b/SignalUtilitiesKit/Messaging/OWSMessageUtils.m @@ -73,7 +73,7 @@ NS_ASSUME_NONNULL_BEGIN YapDatabaseViewTransaction *unreadMessages = [transaction ext:TSUnreadDatabaseViewExtensionName]; NSArray *allGroups = [unreadMessages allGroups]; for (NSString *groupID in allGroups) { - TSThread *thread = [TSThread fetchObjectWithUniqueID:groupID transaction:transaction]; + TSGroupThread *thread = [TSGroupThread fetchObjectWithUniqueID:groupID transaction:transaction]; if (thread.isMuted) continue; [unreadMessages enumerateKeysAndObjectsInGroup:groupID usingBlock:^(NSString *collection, NSString *key, id object, NSUInteger index, BOOL *stop) { @@ -85,6 +85,10 @@ NS_ASSUME_NONNULL_BEGIN NSLog(@"Found an already read message in the * unread * messages list."); return; } + TSIncomingMessage * incomingMessage = (TSIncomingMessage *)object; + if (incomingMessage != nil && thread.isOnlyNotifyingForMentions && !incomingMessage.isUserMentioned) { + return; + } count += 1; }]; } From ec4ce64887f71cfb63715562efbea198d81458af Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Fri, 30 Jul 2021 10:02:08 +1000 Subject: [PATCH 08/16] 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 094856b76..782dde5b6 100644 --- a/Session.xcodeproj/project.pbxproj +++ b/Session.xcodeproj/project.pbxproj @@ -5063,7 +5063,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 280; + CURRENT_PROJECT_VERSION = 281; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; @@ -5132,7 +5132,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 280; + CURRENT_PROJECT_VERSION = 281; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = SUQ8J2PCT7; ENABLE_NS_ASSERTIONS = NO; @@ -5193,7 +5193,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 280; + CURRENT_PROJECT_VERSION = 281; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; @@ -5263,7 +5263,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 280; + CURRENT_PROJECT_VERSION = 281; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = SUQ8J2PCT7; ENABLE_NS_ASSERTIONS = NO; @@ -6148,7 +6148,7 @@ CODE_SIGN_ENTITLEMENTS = Session/Meta/Signal.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 280; + CURRENT_PROJECT_VERSION = 281; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -6216,7 +6216,7 @@ CODE_SIGN_ENTITLEMENTS = Session/Meta/Signal.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 280; + CURRENT_PROJECT_VERSION = 281; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", From 556e13cc729c5c38ea0bd3447fa17e67a053e856 Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Fri, 30 Jul 2021 10:44:48 +1000 Subject: [PATCH 09/16] Fix crash --- SignalUtilitiesKit/Messaging/OWSMessageUtils.m | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/SignalUtilitiesKit/Messaging/OWSMessageUtils.m b/SignalUtilitiesKit/Messaging/OWSMessageUtils.m index 09ab38cb6..9f7d6ea41 100644 --- a/SignalUtilitiesKit/Messaging/OWSMessageUtils.m +++ b/SignalUtilitiesKit/Messaging/OWSMessageUtils.m @@ -72,11 +72,13 @@ NS_ASSUME_NONNULL_BEGIN [LKStorage readWithBlock:^(YapDatabaseReadTransaction *transaction) { YapDatabaseViewTransaction *unreadMessages = [transaction ext:TSUnreadDatabaseViewExtensionName]; NSArray *allGroups = [unreadMessages allGroups]; + // FIXME: Confusingly, `allGroups` includes contact threads as well for (NSString *groupID in allGroups) { - TSGroupThread *thread = [TSGroupThread fetchObjectWithUniqueID:groupID transaction:transaction]; - if (thread.isMuted) continue; + TSThread *thread = [TSThread fetchObjectWithUniqueID:groupID transaction:transaction]; + if (thread.isMuted) { continue; } + BOOL isGroupThread = thread.isGroupThread; [unreadMessages enumerateKeysAndObjectsInGroup:groupID - usingBlock:^(NSString *collection, NSString *key, id object, NSUInteger index, BOOL *stop) { + usingBlock:^(NSString *collection, NSString *key, id object, NSUInteger index, BOOL *stop) { if (![object conformsToProtocol:@protocol(OWSReadTracking)]) { return; } @@ -85,9 +87,11 @@ NS_ASSUME_NONNULL_BEGIN NSLog(@"Found an already read message in the * unread * messages list."); return; } - TSIncomingMessage * incomingMessage = (TSIncomingMessage *)object; - if (incomingMessage != nil && thread.isOnlyNotifyingForMentions && !incomingMessage.isUserMentioned) { - return; + if ([object isKindOfClass:TSIncomingMessage.class] && isGroupThread) { + TSIncomingMessage *incomingMessage = (TSIncomingMessage *)object; + if (((TSGroupThread *)thread).isOnlyNotifyingForMentions && !incomingMessage.isUserMentioned) { + return; + } } count += 1; }]; From 1543dc7b1fabbd37aaecbf414b9d246358874a3b Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Fri, 30 Jul 2021 10:46:15 +1000 Subject: [PATCH 10/16] 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 782dde5b6..ade942d22 100644 --- a/Session.xcodeproj/project.pbxproj +++ b/Session.xcodeproj/project.pbxproj @@ -5063,7 +5063,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 281; + CURRENT_PROJECT_VERSION = 282; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; @@ -5132,7 +5132,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 281; + CURRENT_PROJECT_VERSION = 282; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = SUQ8J2PCT7; ENABLE_NS_ASSERTIONS = NO; @@ -5193,7 +5193,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 281; + CURRENT_PROJECT_VERSION = 282; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; @@ -5263,7 +5263,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 281; + CURRENT_PROJECT_VERSION = 282; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = SUQ8J2PCT7; ENABLE_NS_ASSERTIONS = NO; @@ -6148,7 +6148,7 @@ CODE_SIGN_ENTITLEMENTS = Session/Meta/Signal.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 281; + CURRENT_PROJECT_VERSION = 282; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -6216,7 +6216,7 @@ CODE_SIGN_ENTITLEMENTS = Session/Meta/Signal.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 281; + CURRENT_PROJECT_VERSION = 282; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", From 593ab499520399c1047e078b10759737f1c0b8b5 Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Tue, 3 Aug 2021 09:12:01 +1000 Subject: [PATCH 11/16] Increase voice message recording limit to 3 minutes --- Session/Conversations/ConversationVC+Interaction.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Session/Conversations/ConversationVC+Interaction.swift b/Session/Conversations/ConversationVC+Interaction.swift index 89ae4dc4e..01d8b320a 100644 --- a/Session/Conversations/ConversationVC+Interaction.swift +++ b/Session/Conversations/ConversationVC+Interaction.swift @@ -689,7 +689,7 @@ extension ConversationVC : InputViewDelegate, MessageCellDelegate, ContextMenuAc return cancelVoiceMessageRecording() } // Limit voice messages to a minute - audioTimer = Timer.scheduledTimer(withTimeInterval: 60, repeats: false, block: { [weak self] _ in + audioTimer = Timer.scheduledTimer(withTimeInterval: 180, repeats: false, block: { [weak self] _ in self?.snInputView.hideVoiceMessageUI() self?.endVoiceMessageRecording() }) From 68515310140ca1ca00a59188819c0c8807057a4f Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Tue, 3 Aug 2021 09:12:56 +1000 Subject: [PATCH 12/16] 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 ade942d22..c6cda64de 100644 --- a/Session.xcodeproj/project.pbxproj +++ b/Session.xcodeproj/project.pbxproj @@ -5063,7 +5063,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 282; + CURRENT_PROJECT_VERSION = 283; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; @@ -5132,7 +5132,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 282; + CURRENT_PROJECT_VERSION = 283; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = SUQ8J2PCT7; ENABLE_NS_ASSERTIONS = NO; @@ -5193,7 +5193,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 282; + CURRENT_PROJECT_VERSION = 283; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; @@ -5263,7 +5263,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 282; + CURRENT_PROJECT_VERSION = 283; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = SUQ8J2PCT7; ENABLE_NS_ASSERTIONS = NO; @@ -6148,7 +6148,7 @@ CODE_SIGN_ENTITLEMENTS = Session/Meta/Signal.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 282; + CURRENT_PROJECT_VERSION = 283; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -6216,7 +6216,7 @@ CODE_SIGN_ENTITLEMENTS = Session/Meta/Signal.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 282; + CURRENT_PROJECT_VERSION = 283; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", From dff9f287b84173f95abccdf95cedb0f6fc30a883 Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Tue, 3 Aug 2021 09:37:48 +1000 Subject: [PATCH 13/16] Resolve FIXME --- Session/Shared/ConversationCell.swift | 3 +-- SignalUtilitiesKit/Profile Pictures/ProfilePictureView.swift | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Session/Shared/ConversationCell.swift b/Session/Shared/ConversationCell.swift index 46074851b..3b1d8ca6a 100644 --- a/Session/Shared/ConversationCell.swift +++ b/Session/Shared/ConversationCell.swift @@ -157,8 +157,7 @@ final class ConversationCell : UITableViewCell { // MARK: Updating private func update() { AssertIsOnMainThread() - guard let thread = threadViewModel?.threadRecord, let threadID = thread.uniqueId else { return } - MentionsManager.populateUserPublicKeyCacheIfNeeded(for: threadID) // FIXME: This is a terrible place to do this + guard let thread = threadViewModel?.threadRecord else { return } let isBlocked: Bool if let thread = thread as? TSContactThread { isBlocked = SSKEnvironment.shared.blockingManager.isRecipientIdBlocked(thread.contactSessionID()) diff --git a/SignalUtilitiesKit/Profile Pictures/ProfilePictureView.swift b/SignalUtilitiesKit/Profile Pictures/ProfilePictureView.swift index c1485ad68..b91303954 100644 --- a/SignalUtilitiesKit/Profile Pictures/ProfilePictureView.swift +++ b/SignalUtilitiesKit/Profile Pictures/ProfilePictureView.swift @@ -69,7 +69,7 @@ public final class ProfilePictureView : UIView { publicKey = "" useFallbackPicture = true } else { // A closed group - var users = MentionsManager.userPublicKeyCache[thread.uniqueId!] ?? [] + var users = Set(thread.groupModel.groupMemberIds) users.remove(getUserHexEncodedPublicKey()) var randomUsers = users.sorted() // Sort to provide a level of stability if users.count == 1 { From 9b525f77b61585cb7b879fa4f11284aebb51fa36 Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Tue, 3 Aug 2021 09:38:06 +1000 Subject: [PATCH 14/16] 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 c6cda64de..fee9f747f 100644 --- a/Session.xcodeproj/project.pbxproj +++ b/Session.xcodeproj/project.pbxproj @@ -5063,7 +5063,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 283; + CURRENT_PROJECT_VERSION = 284; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; @@ -5132,7 +5132,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 283; + CURRENT_PROJECT_VERSION = 284; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = SUQ8J2PCT7; ENABLE_NS_ASSERTIONS = NO; @@ -5193,7 +5193,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 283; + CURRENT_PROJECT_VERSION = 284; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; @@ -5263,7 +5263,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 283; + CURRENT_PROJECT_VERSION = 284; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = SUQ8J2PCT7; ENABLE_NS_ASSERTIONS = NO; @@ -6148,7 +6148,7 @@ CODE_SIGN_ENTITLEMENTS = Session/Meta/Signal.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 283; + CURRENT_PROJECT_VERSION = 284; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -6216,7 +6216,7 @@ CODE_SIGN_ENTITLEMENTS = Session/Meta/Signal.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 283; + CURRENT_PROJECT_VERSION = 284; DEVELOPMENT_TEAM = SUQ8J2PCT7; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", From e8d8377a049a8a8867bf44727762f299d58fc58d Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Tue, 3 Aug 2021 09:58:50 +1000 Subject: [PATCH 15/16] Fix threading bug --- .../Sending & Receiving/MessageReceiver+Handling.swift | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift b/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift index ffebdd830..b6e2550a8 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift @@ -288,7 +288,11 @@ extension MessageReceiver { // Notify the user if needed guard (isMainAppAndActive || isBackgroundPoll), let tsIncomingMessage = TSMessage.fetch(uniqueId: tsMessageID, transaction: transaction) as? TSIncomingMessage, let thread = TSThread.fetch(uniqueId: threadID, transaction: transaction) else { return tsMessageID } - SSKEnvironment.shared.notificationsManager!.notifyUser(for: tsIncomingMessage, in: thread, transaction: transaction) + DispatchQueue.main.async { + Storage.read { transaction in + SSKEnvironment.shared.notificationsManager!.notifyUser(for: tsIncomingMessage, in: thread, transaction: transaction) + } + } return tsMessageID } From c5c75a306e27c6b4be8d0f5f6323b7baafc07a9c Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Tue, 3 Aug 2021 10:41:24 +1000 Subject: [PATCH 16/16] Hopefully fix scrolling issue --- Session/Conversations/ConversationVC.swift | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/Session/Conversations/ConversationVC.swift b/Session/Conversations/ConversationVC.swift index 439394502..19a5fd4ed 100644 --- a/Session/Conversations/ConversationVC.swift +++ b/Session/Conversations/ConversationVC.swift @@ -55,6 +55,11 @@ final class ConversationVC : BaseVC, ConversationViewModelDelegate, OWSConversat return messagesTableView.contentSize.height - tableViewUnobscuredHeight } + var isCloseToBottom: Bool { + let margin = (self.lastPageTop - self.messagesTableView.contentOffset.y) + return margin <= ConversationVC.scrollToBottomMargin + } + lazy var mnemonic: String = { let identityManager = OWSIdentityManager.shared() let databaseConnection = identityManager.value(forKey: "dbConnection") as! YapDatabaseConnection @@ -314,6 +319,13 @@ final class ConversationVC : BaseVC, ConversationViewModelDelegate, OWSConversat baselineKeyboardHeight = newHeight self.messagesTableView.keyboardHeight = newHeight } + let margin = (self.lastPageTop - self.messagesTableView.contentOffset.y) + // HACK: If the keyboard is coming up and we're very close to the bottom, scroll to the + // bottom. This "fixes" an issue where the conversation would randomly scroll up sometimes + // when bringing up the keyboard. + if newHeight > 200 && margin <= 2 { + scrollToBottom(isAnimated: false) + } scrollButtonConstraint?.constant = -(newHeight + 16) let newContentOffsetY = max(self.messagesTableView.contentOffset.y + min(lastPageTop, 0) + newHeight - self.messagesTableView.keyboardHeight, 0.0) self.messagesTableView.contentOffset.y = newContentOffsetY @@ -353,13 +365,11 @@ final class ConversationVC : BaseVC, ConversationViewModelDelegate, OWSConversat if update.viewItem?.interaction is TSOutgoingMessage { shouldScrollToBottom = true } else { - let margin = (self.lastPageTop - self.messagesTableView.contentOffset.y) - shouldScrollToBottom = margin <= ConversationVC.scrollToBottomMargin + shouldScrollToBottom = self.isCloseToBottom } case .update: self.messagesTableView.reloadRows(at: [ IndexPath(row: Int(update.oldIndex), section: 0) ], with: .fade) - let margin = (self.lastPageTop - self.messagesTableView.contentOffset.y) - shouldScrollToBottom = margin <= ConversationVC.scrollToBottomMargin + shouldScrollToBottom = self.isCloseToBottom default: preconditionFailure() } }