From 4c5bfe258d8abb8d1bd5b53fad7b76d464f9a79f Mon Sep 17 00:00:00 2001 From: Ryan Zhao Date: Thu, 8 Dec 2022 17:00:04 +1100 Subject: [PATCH] fix an issue where sync expiry will falsely start disappearing messages according to current config --- .../MessageReceiver+SyncedExpiriesMessage.swift | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+SyncedExpiriesMessage.swift b/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+SyncedExpiriesMessage.swift index 2bb9e18d8..8d5f09476 100644 --- a/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+SyncedExpiriesMessage.swift +++ b/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+SyncedExpiriesMessage.swift @@ -15,16 +15,19 @@ extension MessageReceiver { guard userPublicKey == message.sender else { return } message.conversationExpiries.forEach { (syncTarget, expiries) in - guard let disappearingMessageConfiguration = try? DisappearingMessagesConfiguration.fetchOne(db, id: syncTarget) else { return } expiries.forEach { syncExpiry in - let startedAtMs: Double = Double(syncExpiry.expirationTimestamp) - disappearingMessageConfiguration.durationSeconds * 1000 - - _ = try? Interaction - .filter( + guard + let interaction = try? Interaction.filter( Interaction.Columns.threadId == syncTarget && Interaction.Columns.serverHash == syncExpiry.serverHash - ) - .updateAll(db, Interaction.Columns.expiresStartedAtMs.set(to: startedAtMs)) + ).fetchOne(db), + let durationSeconds = interaction.expiresInSeconds + else { return } + + try? interaction.with( + wasRead: true, + expiresStartedAtMs: Double(syncExpiry.expirationTimestamp) - durationSeconds * 1000 + ).update(db) } } }