From 0b5d6ae4b0f8c26e32e85e624e373a449cd6cc67 Mon Sep 17 00:00:00 2001 From: ryanzhao Date: Mon, 4 Oct 2021 14:39:28 +1100 Subject: [PATCH] fix disappearing messages for sync messages --- Session/Conversations/ConversationVC.swift | 1 + .../Expiration/OWSDisappearingMessagesJob.h | 1 + .../Expiration/OWSDisappearingMessagesJob.m | 11 +++++++++++ .../MessageReceiver+Handling.swift | 2 -- 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Session/Conversations/ConversationVC.swift b/Session/Conversations/ConversationVC.swift index 5acfbb65b..fe75af3e7 100644 --- a/Session/Conversations/ConversationVC.swift +++ b/Session/Conversations/ConversationVC.swift @@ -443,6 +443,7 @@ final class ConversationVC : BaseVC, ConversationViewModelDelegate, OWSConversat func markAllAsRead() { guard let lastSortID = viewItems.last?.interaction.sortId else { return } OWSReadReceiptManager.shared().markAsReadLocally(beforeSortId: lastSortID, thread: thread) + SSKEnvironment.shared.disappearingMessagesJob.cleanupMessagesWhichFailedToStartExpiringFromNow() } func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { diff --git a/SessionMessagingKit/Sending & Receiving/Expiration/OWSDisappearingMessagesJob.h b/SessionMessagingKit/Sending & Receiving/Expiration/OWSDisappearingMessagesJob.h index 26ad356f6..fa43294a4 100644 --- a/SessionMessagingKit/Sending & Receiving/Expiration/OWSDisappearingMessagesJob.h +++ b/SessionMessagingKit/Sending & Receiving/Expiration/OWSDisappearingMessagesJob.h @@ -49,6 +49,7 @@ NS_ASSUME_NONNULL_BEGIN // and continue cleaning in the background. - (void)startIfNecessary; +- (void)cleanupMessagesWhichFailedToStartExpiringFromNow; - (void)cleanupMessagesWhichFailedToStartExpiringWithTransaction:(YapDatabaseReadWriteTransaction *)transaction; @end diff --git a/SessionMessagingKit/Sending & Receiving/Expiration/OWSDisappearingMessagesJob.m b/SessionMessagingKit/Sending & Receiving/Expiration/OWSDisappearingMessagesJob.m index 8e6dfbcfb..31e797171 100644 --- a/SessionMessagingKit/Sending & Receiving/Expiration/OWSDisappearingMessagesJob.m +++ b/SessionMessagingKit/Sending & Receiving/Expiration/OWSDisappearingMessagesJob.m @@ -329,6 +329,17 @@ void AssertIsOnDisappearingMessagesQueue() #pragma mark - Cleanup +- (void)cleanupMessagesWhichFailedToStartExpiringFromNow +{ + [LKStorage writeWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) { + [self.disappearingMessagesFinder + enumerateMessagesWhichFailedToStartExpiringWithBlock:^(TSMessage *_Nonnull message) { + [self startAnyExpirationForMessage:message expirationStartedAt:[NSDate millisecondTimestamp] transaction:transaction]; + } + transaction:transaction]; + }]; +} + - (void)cleanupMessagesWhichFailedToStartExpiringWithTransaction:(YapDatabaseReadWriteTransaction *)transaction { [self.disappearingMessagesFinder diff --git a/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift b/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift index dbbeb6818..74103fc2f 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageReceiver+Handling.swift @@ -332,8 +332,6 @@ extension MessageReceiver { let thread = TSThread.fetch(uniqueId: threadID, transaction: transaction) { // Mark previous messages as read if there is a sync message OWSReadReceiptManager.shared().markAsReadLocally(beforeSortId: tsOutgoingMessage.sortId, thread: thread) - // Start expiration for sync messages - OWSDisappearingMessagesJob.shared().startAnyExpiration(for: tsOutgoingMessage, expirationStartedAt: NSDate.millisecondTimestamp(), transaction: transaction) } // Notify the user if needed guard (isMainAppAndActive || isBackgroundPoll), let tsIncomingMessage = TSMessage.fetch(uniqueId: tsMessageID, transaction: transaction) as? TSIncomingMessage,