From 084586e6baf2117501aa53a4673b9aba01b88173 Mon Sep 17 00:00:00 2001 From: Ryan ZHAO <> Date: Wed, 20 Dec 2023 15:58:36 +1100 Subject: [PATCH] change call messages and data extraction notification to be DaR if needed --- SessionMessagingKit/Database/Models/Interaction.swift | 10 ++++++++++ .../Message Handling/MessageReceiver+Calls.swift | 4 ++-- .../MessageReceiver+DataExtractionNotification.swift | 2 +- .../MessageReceiver+ExpirationTimers.swift | 10 +++++++++- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/SessionMessagingKit/Database/Models/Interaction.swift b/SessionMessagingKit/Database/Models/Interaction.swift index ef76ebe18..0c2156f34 100644 --- a/SessionMessagingKit/Database/Models/Interaction.swift +++ b/SessionMessagingKit/Database/Models/Interaction.swift @@ -477,6 +477,16 @@ public extension Interaction { ) } + func withDisappearAfterReadIfNeeded(_ db: Database) -> Interaction { + if let config = try? DisappearingMessagesConfiguration.fetchOne(db, id: self.threadId) { + return self.withDisappearingMessagesConfiguration( + config: config.with(type: .disappearAfterRead) + ) + } + + return self + } + func withDisappearingMessagesConfiguration(_ db: Database) -> Interaction { if let config = try? DisappearingMessagesConfiguration.fetchOne(db, id: self.threadId) { return self.withDisappearingMessagesConfiguration(config: config) diff --git a/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+Calls.swift b/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+Calls.swift index df7a3a133..37133e21a 100644 --- a/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+Calls.swift +++ b/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+Calls.swift @@ -230,7 +230,7 @@ extension MessageReceiver { openGroup: nil ) ) - .withDisappearingMessagesConfiguration(db) // Should follow local setting + .withDisappearAfterReadIfNeeded(db) // Should follow local timer with disappear after read .inserted(db) MessageSender.sendImmediate( @@ -304,7 +304,7 @@ extension MessageReceiver { openGroup: nil ) ) - .withDisappearingMessagesConfiguration(db) // Should follow local setting + .withDisappearAfterReadIfNeeded(db) // Should follow local timer with disappear after read .inserted(db) } } diff --git a/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+DataExtractionNotification.swift b/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+DataExtractionNotification.swift index 2aa9dc177..a4ca92322 100644 --- a/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+DataExtractionNotification.swift +++ b/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+DataExtractionNotification.swift @@ -41,7 +41,7 @@ extension MessageReceiver { openGroup: nil ) ) - .withDisappearingMessagesConfiguration(db) // Should follow local setting + .withDisappearAfterReadIfNeeded(db) // Should follow local timer with disappear after read .inserted(db) } } diff --git a/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+ExpirationTimers.swift b/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+ExpirationTimers.swift index cda6a7ddd..d20c65066 100644 --- a/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+ExpirationTimers.swift +++ b/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+ExpirationTimers.swift @@ -200,7 +200,15 @@ extension MessageReceiver { switch threadVariant { case .legacyGroup: - if localConfig != remoteConfig { + // Only change the config when it is changed from the admin + if localConfig != remoteConfig && + (try? GroupMember + .filter(GroupMember.Columns.groupId == threadId) + .filter(GroupMember.Columns.profileId == sender) + .select(GroupMember.Columns.role) + .asRequest(of: GroupMember.Role.self) + .fetchOne(db)) == .admin + { _ = try remoteConfig.save(db) try SessionUtil