From 04d734ef872713669d078793ac6076d53e1581e9 Mon Sep 17 00:00:00 2001 From: Ryan ZHAO <> Date: Tue, 19 Dec 2023 16:25:03 +1100 Subject: [PATCH] use local disappearing messages setting for call messages and data extraction notifications --- Session/Calls/Call Management/SessionCall.swift | 1 + SessionMessagingKit/Database/Models/Interaction.swift | 6 +++--- .../Message Handling/MessageReceiver+Calls.swift | 8 ++++---- .../MessageReceiver+DataExtractionNotification.swift | 8 ++++---- .../MessageReceiver+ExpirationTimers.swift | 11 ++++++++++- .../Sending & Receiving/MessageReceiver.swift | 1 + 6 files changed, 23 insertions(+), 12 deletions(-) diff --git a/Session/Calls/Call Management/SessionCall.swift b/Session/Calls/Call Management/SessionCall.swift index 2036e09f9..e0e544a3c 100644 --- a/Session/Calls/Call Management/SessionCall.swift +++ b/Session/Calls/Call Management/SessionCall.swift @@ -241,6 +241,7 @@ public final class SessionCall: CurrentCallProtocol, WebRTCSessionDelegate { expiresInSeconds: message.expiresInSeconds, expiresStartedAtMs: message.expiresStartedAtMs ) + .withDisappearingMessagesConfiguration(config: disappearingMessagesConfiguration) .inserted(db) self.callInteractionId = interaction?.id diff --git a/SessionMessagingKit/Database/Models/Interaction.swift b/SessionMessagingKit/Database/Models/Interaction.swift index 6d166b0d5..ef76ebe18 100644 --- a/SessionMessagingKit/Database/Models/Interaction.swift +++ b/SessionMessagingKit/Database/Models/Interaction.swift @@ -485,10 +485,10 @@ public extension Interaction { return self } - func withDisappearingMessagesConfiguration(config: DisappearingMessagesConfiguration) -> Interaction { + func withDisappearingMessagesConfiguration(config: DisappearingMessagesConfiguration?) -> Interaction { return self.with( - expiresInSeconds: config.durationSeconds, - expiresStartedAtMs: (config.type == .disappearAfterSend ? Double(self.timestampMs) : nil) + expiresInSeconds: config?.durationSeconds, + expiresStartedAtMs: (config?.type == .disappearAfterSend ? Double(self.timestampMs) : nil) ) } } diff --git a/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+Calls.swift b/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+Calls.swift index 185c7c3da..b531fa834 100644 --- a/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+Calls.swift +++ b/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+Calls.swift @@ -303,9 +303,9 @@ extension MessageReceiver { timestampMs: (timestampMs * 1000), userPublicKey: currentUserPublicKey, openGroup: nil - ), - expiresInSeconds: message.expiresInSeconds, - expiresStartedAtMs: message.expiresStartedAtMs - ).inserted(db) + ) + ) + .withDisappearingMessagesConfiguration(db) // Should follow local setting + .inserted(db) } } diff --git a/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+DataExtractionNotification.swift b/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+DataExtractionNotification.swift index 254270670..2aa9dc177 100644 --- a/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+DataExtractionNotification.swift +++ b/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+DataExtractionNotification.swift @@ -39,9 +39,9 @@ extension MessageReceiver { timestampMs: (timestampMs * 1000), userPublicKey: getUserHexEncodedPublicKey(db), openGroup: nil - ), - expiresInSeconds: message.expiresInSeconds, - expiresStartedAtMs: message.expiresStartedAtMs - ).inserted(db) + ) + ) + .withDisappearingMessagesConfiguration(db) // Should follow local setting + .inserted(db) } } diff --git a/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+ExpirationTimers.swift b/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+ExpirationTimers.swift index 1df935bb7..cda6a7ddd 100644 --- a/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+ExpirationTimers.swift +++ b/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+ExpirationTimers.swift @@ -134,10 +134,19 @@ extension MessageReceiver { public static func updateContactDisappearingMessagesVersionIfNeeded( _ db: Database, + messageVariant: Message.Variant?, contactId: String?, version: FeatureVersion? ) { - guard let contactId: String = contactId, let version: FeatureVersion = version else { return } + guard + let messageVariant: Message.Variant = messageVariant, + let contactId: String = contactId, + let version: FeatureVersion = version + else { + return + } + + guard [ .visibleMessage, .expirationTimerUpdate ].contains(messageVariant) else { return } _ = try? Contact .filter(id: contactId) diff --git a/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift b/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift index 9c2f56893..2b08f0515 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift @@ -210,6 +210,7 @@ public enum MessageReceiver { MessageReceiver.updateContactDisappearingMessagesVersionIfNeeded( db, + messageVariant: .init(from: message), contactId: message.sender, version: ((!proto.hasExpirationType && !proto.hasExpirationTimer) ? .legacyDisappearingMessages :