From 3f1312da6b38386473647732cdcfdf1a92866bbe Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Wed, 20 Feb 2019 11:42:52 -0500 Subject: [PATCH] Revert "Introduce ConversationSnapshot." This reverts commit 8b3d08c7e3e166b13013b93d5ebd386571a6ea6d. --- .../ConversationViewController.m | 26 ++++--------- .../ConversationView/ConversationViewModel.h | 2 +- .../ConversationView/ConversationViewModel.m | 39 +++++++------------ SignalMessaging/utils/ThreadUtil.m | 15 ------- 4 files changed, 23 insertions(+), 59 deletions(-) diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m index a5c976bea..891f994c2 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m @@ -450,11 +450,11 @@ typedef enum : NSUInteger { NSString *_Nullable recipientId = notification.userInfo[kNSNotificationKey_ProfileRecipientId]; NSData *_Nullable groupId = notification.userInfo[kNSNotificationKey_ProfileGroupId]; if (recipientId.length > 0 && [self.thread.recipientIdentifiers containsObject:recipientId]) { - [self.conversationViewModel ensureDynamicInteractionsAndUpdateIfNecessary:YES]; + [self.conversationViewModel ensureDynamicInteractions]; } else if (groupId.length > 0 && self.thread.isGroupThread) { TSGroupThread *groupThread = (TSGroupThread *)self.thread; if ([groupThread.groupModel.groupId isEqualToData:groupId]) { - [self.conversationViewModel ensureDynamicInteractionsAndUpdateIfNecessary:YES]; + [self.conversationViewModel ensureDynamicInteractions]; [self ensureBannerState]; } } @@ -868,7 +868,6 @@ typedef enum : NSUInteger { // Avoid layout corrupt issues and out-of-date message subtitles. self.lastReloadDate = [NSDate new]; [self.conversationViewModel viewDidResetContentAndLayout]; - [self tryToUpdateConversationSnapshot]; [self.collectionView.collectionViewLayout invalidateLayout]; [self.collectionView reloadData]; @@ -2438,7 +2437,7 @@ typedef enum : NSUInteger { - (void)contactsViewHelperDidUpdateContacts { - [self.conversationViewModel ensureDynamicInteractionsAndUpdateIfNecessary:YES]; + [self.conversationViewModel ensureDynamicInteractions]; } - (void)createConversationScrollButtons @@ -2476,7 +2475,7 @@ typedef enum : NSUInteger { _hasUnreadMessages = hasUnreadMessages; self.scrollDownButton.hasUnreadMessages = hasUnreadMessages; - [self.conversationViewModel ensureDynamicInteractionsAndUpdateIfNecessary:YES]; + [self.conversationViewModel ensureDynamicInteractions]; } - (void)scrollDownButtonTapped @@ -2621,7 +2620,7 @@ typedef enum : NSUInteger { [self showApprovalDialogForAttachment:attachment]; [ThreadUtil addThreadToProfileWhitelistIfEmptyContactThread:self.thread]; - [self.conversationViewModel ensureDynamicInteractionsAndUpdateIfNecessary:YES]; + [self.conversationViewModel ensureDynamicInteractions]; } - (void)messageWasSent:(TSOutgoingMessage *)message @@ -2981,7 +2980,7 @@ typedef enum : NSUInteger { [self messageWasSent:message]; if (didAddToProfileWhitelist) { - [self.conversationViewModel ensureDynamicInteractionsAndUpdateIfNecessary:YES]; + [self.conversationViewModel ensureDynamicInteractions]; } }]; } @@ -3627,7 +3626,7 @@ typedef enum : NSUInteger { [self messageWasSent:message]; if (didAddToProfileWhitelist) { - [self.conversationViewModel ensureDynamicInteractionsAndUpdateIfNecessary:YES]; + [self.conversationViewModel ensureDynamicInteractions]; } }); } @@ -4030,7 +4029,7 @@ typedef enum : NSUInteger { [self clearDraft]; if (didAddToProfileWhitelist) { - [self.conversationViewModel ensureDynamicInteractionsAndUpdateIfNecessary:YES]; + [self.conversationViewModel ensureDynamicInteractions]; } } @@ -4928,15 +4927,6 @@ typedef enum : NSUInteger { #pragma mark - Conversation Snapshot -- (void)tryToUpdateConversationSnapshot -{ - if (!self.isObservingVMUpdates) { - return; - } - - [self updateConversationSnapshot]; -} - - (void)updateConversationSnapshot { ConversationSnapshot *conversationSnapshot = [ConversationSnapshot new]; diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewModel.h b/Signal/src/ViewControllers/ConversationView/ConversationViewModel.h index 902413760..c4d781b3a 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewModel.h +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewModel.h @@ -93,7 +93,7 @@ typedef NS_ENUM(NSUInteger, ConversationUpdateItemType) { focusMessageIdOnOpen:(nullable NSString *)focusMessageIdOnOpen delegate:(id)delegate NS_DESIGNATED_INITIALIZER; -- (void)ensureDynamicInteractionsAndUpdateIfNecessary:(BOOL)updateIfNecessary; +- (void)ensureDynamicInteractions; - (void)clearUnreadMessagesIndicator; diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewModel.m b/Signal/src/ViewControllers/ConversationView/ConversationViewModel.m index f1086644e..a5e589734 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewModel.m +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewModel.m @@ -273,7 +273,7 @@ static const int kYapDatabaseRangeMaxLength = 25000; { OWSAssertIsOnMainThread(); - [self ensureDynamicInteractionsAndUpdateIfNecessary:YES]; + [self ensureDynamicInteractions]; } - (void)profileWhitelistDidChange:(NSNotification *)notification @@ -308,7 +308,7 @@ static const int kYapDatabaseRangeMaxLength = 25000; self.typingIndicatorsSender = [self.typingIndicators typingRecipientIdForThread:self.thread]; self.collapseCutoffDate = [NSDate new]; - [self ensureDynamicInteractionsAndUpdateIfNecessary:NO]; + [self ensureDynamicInteractions]; [self.primaryStorage updateUIDatabaseConnectionToLatest]; [self createNewMessageMapping]; @@ -464,32 +464,21 @@ static const int kYapDatabaseRangeMaxLength = 25000; self.collapseCutoffDate = [NSDate new]; } -- (void)ensureDynamicInteractionsAndUpdateIfNecessary:(BOOL)updateIfNecessary +- (void)ensureDynamicInteractions { OWSAssertIsOnMainThread(); const int currentMaxRangeSize = (int)self.messageMapping.desiredLength; const int maxRangeSize = MAX(kConversationInitialMaxRangeSize, currentMaxRangeSize); - ThreadDynamicInteractions *dynamicInteractions = - [ThreadUtil ensureDynamicInteractionsForThread:self.thread - contactsManager:self.contactsManager - blockingManager:self.blockingManager - dbConnection:self.editingDatabaseConnection - hideUnreadMessagesIndicator:self.hasClearedUnreadMessagesIndicator - lastUnreadIndicator:self.dynamicInteractions.unreadIndicator - focusMessageId:self.focusMessageIdOnOpen - maxRangeSize:maxRangeSize]; - BOOL didChange = ![NSObject isNullableObject:self.dynamicInteractions equalTo:dynamicInteractions]; - self.dynamicInteractions = dynamicInteractions; - - if (didChange && updateIfNecessary) { - if (![self reloadViewItems]) { - OWSFailDebug(@"Failed to reload view items."); - } - - [self.delegate conversationViewModelDidUpdate:ConversationUpdate.reloadUpdate]; - } + self.dynamicInteractions = [ThreadUtil ensureDynamicInteractionsForThread:self.thread + contactsManager:self.contactsManager + blockingManager:self.blockingManager + dbConnection:self.editingDatabaseConnection + hideUnreadMessagesIndicator:self.hasClearedUnreadMessagesIndicator + lastUnreadIndicator:self.dynamicInteractions.unreadIndicator + focusMessageId:self.focusMessageIdOnOpen + maxRangeSize:maxRangeSize]; } - (nullable id)viewItemForUnreadMessagesIndicator @@ -530,7 +519,7 @@ static const int kYapDatabaseRangeMaxLength = 25000; if (self.dynamicInteractions.unreadIndicator) { // If we've just cleared the "unread messages" indicator, // update the dynamic interactions. - [self ensureDynamicInteractionsAndUpdateIfNecessary:YES]; + [self ensureDynamicInteractions]; } } @@ -973,7 +962,7 @@ static const int kYapDatabaseRangeMaxLength = 25000; self.collapseCutoffDate = [NSDate new]; - [self ensureDynamicInteractionsAndUpdateIfNecessary:NO]; + [self ensureDynamicInteractions]; if (![self reloadViewItems]) { OWSFailDebug(@"failed to reload view items in resetMapping."); @@ -1595,7 +1584,7 @@ static const int kYapDatabaseRangeMaxLength = 25000; self.collapseCutoffDate = [NSDate new]; - [self ensureDynamicInteractionsAndUpdateIfNecessary:NO]; + [self ensureDynamicInteractions]; if (![self reloadViewItems]) { OWSFailDebug(@"failed to reload view items in resetMapping."); diff --git a/SignalMessaging/utils/ThreadUtil.m b/SignalMessaging/utils/ThreadUtil.m index f42badd4c..2d5b182f3 100644 --- a/SignalMessaging/utils/ThreadUtil.m +++ b/SignalMessaging/utils/ThreadUtil.m @@ -45,21 +45,6 @@ NS_ASSUME_NONNULL_BEGIN self.unreadIndicator = nil; } -- (BOOL)isEqual:(id)object -{ - if (self == object) { - return YES; - } - - if (![object isKindOfClass:[ThreadDynamicInteractions class]]) { - return NO; - } - - ThreadDynamicInteractions *other = (ThreadDynamicInteractions *)object; - return ([NSObject isNullableObject:self.focusMessagePosition equalTo:other.focusMessagePosition] && - [NSObject isNullableObject:self.unreadIndicator equalTo:other.unreadIndicator]); -} - @end #pragma mark -