From db097ab8dea9936403434e663a02b60b598f64b1 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Tue, 23 May 2017 13:23:38 -0400 Subject: [PATCH] Fix caching of message bubble sizes. // FREEBIE --- Signal.xcodeproj/project.pbxproj | 6 --- Signal/src/Models/OWSCall.m | 2 +- Signal/src/Models/OWSDisplayedMessage.h | 38 ---------------- Signal/src/Models/OWSDisplayedMessage.m | 45 ------------------- .../TSMessageAdapaters/TSMessageAdapter.m | 15 +++---- 5 files changed, 7 insertions(+), 99 deletions(-) delete mode 100644 Signal/src/Models/OWSDisplayedMessage.h delete mode 100644 Signal/src/Models/OWSDisplayedMessage.m diff --git a/Signal.xcodeproj/project.pbxproj b/Signal.xcodeproj/project.pbxproj index 706feab1b..a191f73db 100644 --- a/Signal.xcodeproj/project.pbxproj +++ b/Signal.xcodeproj/project.pbxproj @@ -110,7 +110,6 @@ 452ECA4E1E087E7200E2F016 /* MessageFetcherJob.swift in Sources */ = {isa = PBXBuildFile; fileRef = 452ECA4C1E087E7200E2F016 /* MessageFetcherJob.swift */; }; 4531C9C41DD8E6D800F08304 /* JSQMessagesCollectionViewCell+OWS.m in Sources */ = {isa = PBXBuildFile; fileRef = 4531C9C31DD8E6D800F08304 /* JSQMessagesCollectionViewCell+OWS.m */; }; 45387B041E36D650005D00B3 /* OWS102MoveLoggingPreferenceToUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 45387B031E36D650005D00B3 /* OWS102MoveLoggingPreferenceToUserDefaults.m */; }; - 453D28B71D32BA5F00D523F0 /* OWSDisplayedMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 453D28B61D32BA5F00D523F0 /* OWSDisplayedMessage.m */; }; 453D28BA1D332DB100D523F0 /* OWSMessagesBubblesSizeCalculator.m in Sources */ = {isa = PBXBuildFile; fileRef = 453D28B91D332DB100D523F0 /* OWSMessagesBubblesSizeCalculator.m */; }; 453D28BB1D332DB100D523F0 /* OWSMessagesBubblesSizeCalculator.m in Sources */ = {isa = PBXBuildFile; fileRef = 453D28B91D332DB100D523F0 /* OWSMessagesBubblesSizeCalculator.m */; }; 4542F0941EB9372700C7EE92 /* SystemContactsFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4542F0931EB9372700C7EE92 /* SystemContactsFetcher.swift */; }; @@ -525,8 +524,6 @@ 45387B021E36D650005D00B3 /* OWS102MoveLoggingPreferenceToUserDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OWS102MoveLoggingPreferenceToUserDefaults.h; path = Migrations/OWS102MoveLoggingPreferenceToUserDefaults.h; sourceTree = ""; }; 45387B031E36D650005D00B3 /* OWS102MoveLoggingPreferenceToUserDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OWS102MoveLoggingPreferenceToUserDefaults.m; path = Migrations/OWS102MoveLoggingPreferenceToUserDefaults.m; sourceTree = ""; }; 453CC0361D08E1A60040EBA3 /* sn */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sn; path = translations/sn.lproj/Localizable.strings; sourceTree = ""; }; - 453D28B51D32BA5F00D523F0 /* OWSDisplayedMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSDisplayedMessage.h; sourceTree = ""; }; - 453D28B61D32BA5F00D523F0 /* OWSDisplayedMessage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSDisplayedMessage.m; sourceTree = ""; }; 453D28B81D332DB100D523F0 /* OWSMessagesBubblesSizeCalculator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSMessagesBubblesSizeCalculator.h; sourceTree = ""; }; 453D28B91D332DB100D523F0 /* OWSMessagesBubblesSizeCalculator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSMessagesBubblesSizeCalculator.m; sourceTree = ""; }; 4542F0931EB9372700C7EE92 /* SystemContactsFetcher.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SystemContactsFetcher.swift; sourceTree = ""; }; @@ -1101,8 +1098,6 @@ 45855F361D9498A40084F340 /* OWSContactAvatarBuilder.m */, 458E38351D668EBF0094BD24 /* OWSDeviceProvisioningURLParser.h */, 458E38361D668EBF0094BD24 /* OWSDeviceProvisioningURLParser.m */, - 453D28B51D32BA5F00D523F0 /* OWSDisplayedMessage.h */, - 453D28B61D32BA5F00D523F0 /* OWSDisplayedMessage.m */, 45666EC71D994C0D008FE134 /* OWSGroupAvatarBuilder.h */, 45666EC81D994C0D008FE134 /* OWSGroupAvatarBuilder.m */, 453D28B81D332DB100D523F0 /* OWSMessagesBubblesSizeCalculator.h */, @@ -2158,7 +2153,6 @@ 34B3F8911E8DF1710035BE1A /* ShowGroupMembersViewController.m in Sources */, 45FBC5D11DF8592E00E9B410 /* SignalCall.swift in Sources */, 452C468F1E427E200087B011 /* OutboundCallInitiator.swift in Sources */, - 453D28B71D32BA5F00D523F0 /* OWSDisplayedMessage.m in Sources */, 45F170BB1E2FC5D3003FC1F2 /* CallAudioService.swift in Sources */, 34B3F8711E8DF1700035BE1A /* AboutTableViewController.m in Sources */, 34B3F88D1E8DF1700035BE1A /* OWSQRCodeScanningViewController.m in Sources */, diff --git a/Signal/src/Models/OWSCall.m b/Signal/src/Models/OWSCall.m index d28742b02..23bd2d101 100644 --- a/Signal/src/Models/OWSCall.m +++ b/Signal/src/Models/OWSCall.m @@ -193,7 +193,7 @@ NS_ASSUME_NONNULL_BEGIN - (NSUInteger)messageHash { - return self.hash; + return self.interaction.hash; } - (NSString *)text diff --git a/Signal/src/Models/OWSDisplayedMessage.h b/Signal/src/Models/OWSDisplayedMessage.h deleted file mode 100644 index a34a9ccda..000000000 --- a/Signal/src/Models/OWSDisplayedMessage.h +++ /dev/null @@ -1,38 +0,0 @@ -// Created by Dylan Bourgeois on 29/11/14. -// Copyright (c) 2014 Hexed Bits. All rights reserved. -// Portions Copyright (c) 2016 Open Whisper Systems. All rights reserved. - -#import "JSQMessageData.h" -#import - -/* OWSDisplayedMessage message is the parent class for displaying information to the user - * from within the conversation view. Do not use directly : - * - * @see OWSInfoMessage - * @see OWSErrorMessage - * - */ -@interface OWSDisplayedMessage : NSObject - -/* - * Returns the unique identifier of the person affected by the displayed message - */ -@property (copy, nonatomic, readonly) NSString *senderId; - -/* - * Returns the name of the person affected by the displayed message - */ -@property (copy, nonatomic, readonly) NSString *senderDisplayName; - -/* - * Returns date of the displayed message - */ -@property (copy, nonatomic, readonly) NSDate *date; - -#pragma mark - Initializer - -- (instancetype)initWithSenderId:(NSString *)senderId - senderDisplayName:(NSString *)senderDisplayName - date:(NSDate *)date; - -@end diff --git a/Signal/src/Models/OWSDisplayedMessage.m b/Signal/src/Models/OWSDisplayedMessage.m deleted file mode 100644 index 983921e53..000000000 --- a/Signal/src/Models/OWSDisplayedMessage.m +++ /dev/null @@ -1,45 +0,0 @@ -// Created by Dylan Bourgeois on 29/11/14. -// Copyright (c) 2014 Hexed Bits. All rights reserved. -// Portions Copyright (c) 2016 Open Whisper Systems. All rights reserved. - -#import "OWSDisplayedMessage.h" - -@implementation OWSDisplayedMessage - -- (id)init -{ - NSAssert(NO, - @"%s is not a valid initializer for %@. Use %@ instead", - __PRETTY_FUNCTION__, - [self class], - NSStringFromSelector(@selector(initWithSenderId:senderDisplayName:date:))); - return nil; -} - -- (instancetype)initWithSenderId:(NSString *)senderId - senderDisplayName:(NSString *)senderDisplayName - date:(NSDate *)date -{ - self = [super init]; - if (!self) { - return self; - } - - _senderId = [senderId copy]; - _senderDisplayName = [senderDisplayName copy]; - _date = [date copy]; - - return self; -} - -- (NSUInteger)messageHash -{ - return self.date.hash ^ self.senderId.hash; -} - -- (BOOL)isMediaMessage -{ - return NO; -} - -@end diff --git a/Signal/src/Models/TSMessageAdapaters/TSMessageAdapter.m b/Signal/src/Models/TSMessageAdapaters/TSMessageAdapter.m index 60b245a60..93b4062e9 100644 --- a/Signal/src/Models/TSMessageAdapaters/TSMessageAdapter.m +++ b/Signal/src/Models/TSMessageAdapaters/TSMessageAdapter.m @@ -60,7 +60,7 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, copy) NSDate *messageDate; @property (nonatomic, retain) NSString *messageBody; -@property NSUInteger identifier; +@property (nonatomic) NSString *interactionUniqueId; @end @@ -77,9 +77,8 @@ NS_ASSUME_NONNULL_BEGIN _interaction = interaction; _messageDate = interaction.date; - // TODO casting a string to an integer? At least need a comment here explaining why we are doing this. - // Can we just remove this? Haven't found where we're using it... - _identifier = (NSUInteger)interaction.uniqueId; + + self.interactionUniqueId = interaction.uniqueId; if ([interaction isKindOfClass:[TSMessage class]]) { TSMessage *message = (TSMessage *)interaction; @@ -354,11 +353,9 @@ NS_ASSUME_NONNULL_BEGIN - (NSUInteger)messageHash { - if (self.isMediaMessage) { - return [self.mediaItem mediaHash]; - } else { - return self.identifier; - } + OWSAssert(self.interactionUniqueId); + + return self.interactionUniqueId.hash; } - (NSInteger)messageState {