From a1b412c704380d9bef1c455c297198bd1c3b0bc0 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Fri, 8 Feb 2019 16:20:48 -0700 Subject: [PATCH] Fix "missed calls" not sorting threads Ensure we touch thread after saving *any* interaction --- SignalServiceKit/src/Contacts/TSThread.m | 2 ++ .../src/Messages/Interactions/TSErrorMessage.m | 1 - .../Messages/Interactions/TSIncomingMessage.m | 1 - .../src/Messages/Interactions/TSInfoMessage.m | 1 - .../src/Messages/Interactions/TSInteraction.m | 14 +++++++++++--- .../src/Messages/Interactions/TSMessage.m | 17 ----------------- SignalServiceKit/src/Messages/TSCall.m | 6 +----- 7 files changed, 14 insertions(+), 28 deletions(-) diff --git a/SignalServiceKit/src/Contacts/TSThread.m b/SignalServiceKit/src/Contacts/TSThread.m index e7d0952f2..441557ff9 100644 --- a/SignalServiceKit/src/Contacts/TSThread.m +++ b/SignalServiceKit/src/Contacts/TSThread.m @@ -429,6 +429,8 @@ ConversationColorName const kConversationColorName_Default = ConversationColorNa if (!self.shouldThreadBeVisible) { self.shouldThreadBeVisible = YES; [self saveWithTransaction:transaction]; + } else { + [self touchWithTransaction:transaction]; } } diff --git a/SignalServiceKit/src/Messages/Interactions/TSErrorMessage.m b/SignalServiceKit/src/Messages/Interactions/TSErrorMessage.m index e8b9e2e05..63e37e645 100644 --- a/SignalServiceKit/src/Messages/Interactions/TSErrorMessage.m +++ b/SignalServiceKit/src/Messages/Interactions/TSErrorMessage.m @@ -218,7 +218,6 @@ NSUInteger TSErrorMessageSchemaVersion = 1; OWSLogDebug(@"marking as read uniqueId: %@ which has timestamp: %llu", self.uniqueId, self.timestamp); _read = YES; [self saveWithTransaction:transaction]; - [self touchThreadWithTransaction:transaction]; // Ignore sendReadReceipt - it doesn't apply to error messages. } diff --git a/SignalServiceKit/src/Messages/Interactions/TSIncomingMessage.m b/SignalServiceKit/src/Messages/Interactions/TSIncomingMessage.m index f2646edad..7e01e11e7 100644 --- a/SignalServiceKit/src/Messages/Interactions/TSIncomingMessage.m +++ b/SignalServiceKit/src/Messages/Interactions/TSIncomingMessage.m @@ -158,7 +158,6 @@ NS_ASSUME_NONNULL_BEGIN secondsAgoRead); _read = YES; [self saveWithTransaction:transaction]; - [self touchThreadWithTransaction:transaction]; [transaction addCompletionQueue:nil completionBlock:^{ diff --git a/SignalServiceKit/src/Messages/Interactions/TSInfoMessage.m b/SignalServiceKit/src/Messages/Interactions/TSInfoMessage.m index cf3ab1f7d..2220fbc3c 100644 --- a/SignalServiceKit/src/Messages/Interactions/TSInfoMessage.m +++ b/SignalServiceKit/src/Messages/Interactions/TSInfoMessage.m @@ -181,7 +181,6 @@ NSUInteger TSInfoMessageSchemaVersion = 1; OWSLogDebug(@"marking as read uniqueId: %@ which has timestamp: %llu", self.uniqueId, self.timestamp); _read = YES; [self saveWithTransaction:transaction]; - [self touchThreadWithTransaction:transaction]; // Ignore sendReadReceipt, it doesn't apply to info messages. } diff --git a/SignalServiceKit/src/Messages/Interactions/TSInteraction.m b/SignalServiceKit/src/Messages/Interactions/TSInteraction.m index ace9b4a8a..b40632d37 100644 --- a/SignalServiceKit/src/Messages/Interactions/TSInteraction.m +++ b/SignalServiceKit/src/Messages/Interactions/TSInteraction.m @@ -1,5 +1,5 @@ // -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. +// Copyright (c) 2019 Open Whisper Systems. All rights reserved. // #import "TSInteraction.h" @@ -160,8 +160,16 @@ NSString *NSStringFromOWSInteractionType(OWSInteractionType value) - (void)touchThreadWithTransaction:(YapDatabaseReadWriteTransaction *)transaction { - TSThread *thread = [TSThread fetchObjectWithUniqueID:self.uniqueThreadId transaction:transaction]; - [thread touchWithTransaction:transaction]; + [transaction touchObjectForKey:self.uniqueThreadId inCollection:[TSThread collection]]; +} + +- (void)applyChangeToSelfAndLatestCopy:(YapDatabaseReadWriteTransaction *)transaction + changeBlock:(void (^)(id))changeBlock +{ + OWSAssertDebug(transaction); + + [super applyChangeToSelfAndLatestCopy:transaction changeBlock:changeBlock]; + [self touchThreadWithTransaction:transaction]; } #pragma mark Date operations diff --git a/SignalServiceKit/src/Messages/Interactions/TSMessage.m b/SignalServiceKit/src/Messages/Interactions/TSMessage.m index 296348678..c51a4919e 100644 --- a/SignalServiceKit/src/Messages/Interactions/TSMessage.m +++ b/SignalServiceKit/src/Messages/Interactions/TSMessage.m @@ -370,14 +370,6 @@ static const NSUInteger OWSMessageSchemaVersion = 4; } [attachment removeWithTransaction:transaction]; }; - - // Updates inbox thread preview - [self touchThreadWithTransaction:transaction]; -} - -- (void)touchThreadWithTransaction:(YapDatabaseReadWriteTransaction *)transaction -{ - [transaction touchObjectForKey:self.uniqueThreadId inCollection:[TSThread collection]]; } - (BOOL)isExpiringMessage @@ -416,15 +408,6 @@ static const NSUInteger OWSMessageSchemaVersion = 4; #pragma mark - Update With... Methods -- (void)applyChangeToSelfAndLatestCopy:(YapDatabaseReadWriteTransaction *)transaction - changeBlock:(void (^)(id))changeBlock -{ - OWSAssertDebug(transaction); - - [super applyChangeToSelfAndLatestCopy:transaction changeBlock:changeBlock]; - [self touchThreadWithTransaction:transaction]; -} - - (void)updateWithExpireStartedAt:(uint64_t)expireStartedAt transaction:(YapDatabaseReadWriteTransaction *)transaction { OWSAssertDebug(expireStartedAt > 0); diff --git a/SignalServiceKit/src/Messages/TSCall.m b/SignalServiceKit/src/Messages/TSCall.m index 67c6fcc98..f6c2cba18 100644 --- a/SignalServiceKit/src/Messages/TSCall.m +++ b/SignalServiceKit/src/Messages/TSCall.m @@ -1,5 +1,5 @@ // -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. +// Copyright (c) 2019 Open Whisper Systems. All rights reserved. // #import "TSCall.h" @@ -144,7 +144,6 @@ NSUInteger TSCallCurrentSchemaVersion = 1; OWSLogDebug(@"marking as read uniqueId: %@ which has timestamp: %llu", self.uniqueId, self.timestamp); _read = YES; [self saveWithTransaction:transaction]; - [self touchThreadWithTransaction:transaction]; // Ignore sendReadReceipt - it doesn't apply to calls. } @@ -171,9 +170,6 @@ NSUInteger TSCallCurrentSchemaVersion = 1; _callType = callType; [self saveWithTransaction:transaction]; - - // redraw any thread-related unread count UI. - [self touchThreadWithTransaction:transaction]; } @end