From 0aa32bcab38de2b0dbd798daf2050f2e746d1f80 Mon Sep 17 00:00:00 2001 From: Ryan ZHAO <> Date: Mon, 11 Dec 2023 16:48:19 +1100 Subject: [PATCH] fix an issue where expiration update control messages won't be marked as read on linked devices --- .../ThreadDisappearingMessagesSettingsViewModel.swift | 11 +++++++---- SessionMessagingKit/Jobs/Types/GetExpirationJob.swift | 2 ++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Session/Conversations/Settings/ThreadDisappearingMessagesSettingsViewModel.swift b/Session/Conversations/Settings/ThreadDisappearingMessagesSettingsViewModel.swift index 669589abe..909dca067 100644 --- a/Session/Conversations/Settings/ThreadDisappearingMessagesSettingsViewModel.swift +++ b/Session/Conversations/Settings/ThreadDisappearingMessagesSettingsViewModel.swift @@ -494,13 +494,16 @@ class ThreadDisappearingMessagesSettingsViewModel: SessionTableViewModel, Naviga guard !Features.useNewDisappearingMessagesConfig else { return nil } return UInt32(floor(updatedConfig.isEnabled ? updatedConfig.durationSeconds : 0)) }() + + let expirationTimerUpdateMessage: ExpirationTimerUpdate = ExpirationTimerUpdate( + syncTarget: nil, + duration: duration + ) + expirationTimerUpdateMessage.sentTimestamp = UInt64(currentTimestampMs) try MessageSender.send( db, - message: ExpirationTimerUpdate( - syncTarget: nil, - duration: duration - ), + message: expirationTimerUpdateMessage, interactionId: interactionId, threadId: threadId, threadVariant: threadVariant, diff --git a/SessionMessagingKit/Jobs/Types/GetExpirationJob.swift b/SessionMessagingKit/Jobs/Types/GetExpirationJob.swift index c784aabe4..fc0c4f7b2 100644 --- a/SessionMessagingKit/Jobs/Types/GetExpirationJob.swift +++ b/SessionMessagingKit/Jobs/Types/GetExpirationJob.swift @@ -85,6 +85,8 @@ public enum GetExpirationJob: JobExecutor { ) } + // FIXME: If currentTimestampMs - messageSentTimestampMs > expirationTimer, the message might already be expired and removed directly + try Interaction .filter(hashesToUseDefault.contains(Interaction.Columns.serverHash)) .filter(Interaction.Columns.expiresStartedAtMs == nil)