From e8ec91ba8b9f0815842881ee3f1701ba497695a0 Mon Sep 17 00:00:00 2001 From: Ryan ZHAO <> Date: Wed, 22 Nov 2023 11:54:05 +1100 Subject: [PATCH] keep disappearing message update control message for legacy mode --- ...isappearingMessagesSettingsViewModel.swift | 21 ++++++++++++------- .../MessageReceiver+ExpirationTimers.swift | 9 +------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/Session/Conversations/Settings/ThreadDisappearingMessagesSettingsViewModel.swift b/Session/Conversations/Settings/ThreadDisappearingMessagesSettingsViewModel.swift index 28e531158..411da2143 100644 --- a/Session/Conversations/Settings/ThreadDisappearingMessagesSettingsViewModel.swift +++ b/Session/Conversations/Settings/ThreadDisappearingMessagesSettingsViewModel.swift @@ -484,12 +484,19 @@ class ThreadDisappearingMessagesSettingsViewModel: SessionTableViewModel, Naviga dependencies.storage.writeAsync(using: dependencies) { [threadId, threadVariant, dependencies] db in _ = try updatedConfig.saved(db) - _ = try Interaction - .filter(Interaction.Columns.threadId == threadId) - .filter(Interaction.Columns.variant == Interaction.Variant.infoDisappearingMessagesUpdate) - .deleteAll(db) - let currentOffsetTimestampMs: Int64 = SnodeAPI.currentOffsetTimestampMs() + var expiresInSeconds: TimeInterval? = nil + var expiresStartedAtMs: Double? = nil + + if Features.useNewDisappearingMessagesConfig { + _ = try Interaction + .filter(Interaction.Columns.threadId == threadId) + .filter(Interaction.Columns.variant == Interaction.Variant.infoDisappearingMessagesUpdate) + .deleteAll(db) + + expiresInSeconds = (updatedConfig.isEnabled ? nil : self.config.durationSeconds) + expiresStartedAtMs = (!updatedConfig.isEnabled && self.config.type == .disappearAfterSend ? Double(currentOffsetTimestampMs) : nil) + } let interaction: Interaction = try Interaction( threadId: threadId, @@ -497,8 +504,8 @@ class ThreadDisappearingMessagesSettingsViewModel: SessionTableViewModel, Naviga variant: .infoDisappearingMessagesUpdate, body: updatedConfig.messageInfoString(with: nil, isPreviousOff: !self.config.isEnabled), timestampMs: currentOffsetTimestampMs, - expiresInSeconds: (updatedConfig.isEnabled ? nil : self.config.durationSeconds), - expiresStartedAtMs: (!updatedConfig.isEnabled && self.config.type == .disappearAfterSend ? Double(currentOffsetTimestampMs) : nil) + expiresInSeconds: expiresInSeconds, + expiresStartedAtMs: expiresStartedAtMs ) .inserted(db) diff --git a/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+ExpirationTimers.swift b/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+ExpirationTimers.swift index 05a64b89e..15efcdfd6 100644 --- a/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+ExpirationTimers.swift +++ b/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+ExpirationTimers.swift @@ -109,12 +109,6 @@ extension MessageReceiver { try remoteConfig.save(db) } - // Remove previous info messages - _ = try Interaction - .filter(Interaction.Columns.threadId == threadId) - .filter(Interaction.Columns.variant == Interaction.Variant.infoDisappearingMessagesUpdate) - .deleteAll(db) - // Add an info message for the user let currentUserPublicKey: String = getUserHexEncodedPublicKey(db) _ = try Interaction( @@ -136,8 +130,7 @@ extension MessageReceiver { timestampMs: (timestampMs * 1000), userPublicKey: currentUserPublicKey, openGroup: nil - ), - expiresInSeconds: (remoteConfig.isEnabled ? nil : localConfig.durationSeconds) + ) ).inserted(db) }