From 42f244006793d05f06783dfcc7666c8a8a494acb Mon Sep 17 00:00:00 2001 From: Ryan ZHAO <> Date: Fri, 8 Dec 2023 17:24:42 +1100 Subject: [PATCH] fix disappearing messages update control messages for legacy groups and linked devices --- ...isappearingMessagesSettingsViewModel.swift | 20 ++++++++++++++----- .../MessageReceiver+ExpirationTimers.swift | 16 +++++++++++++++ .../SessionUtil+Contacts.swift | 5 ----- 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/Session/Conversations/Settings/ThreadDisappearingMessagesSettingsViewModel.swift b/Session/Conversations/Settings/ThreadDisappearingMessagesSettingsViewModel.swift index 4bc4afe6d..e3c4291f4 100644 --- a/Session/Conversations/Settings/ThreadDisappearingMessagesSettingsViewModel.swift +++ b/Session/Conversations/Settings/ThreadDisappearingMessagesSettingsViewModel.swift @@ -479,11 +479,21 @@ class ThreadDisappearingMessagesSettingsViewModel: SessionTableViewModel, Naviga let userPublicKey: String = getUserHexEncodedPublicKey(db, using: dependencies) if Features.useNewDisappearingMessagesConfig { - _ = try Interaction - .filter(Interaction.Columns.threadId == threadId) - .filter(Interaction.Columns.variant == Interaction.Variant.infoDisappearingMessagesUpdate) - .filter(Interaction.Columns.authorId == userPublicKey) // FIXME: Remove all in legacy groups - .deleteAll(db) + switch threadVariant { + case .contact: + _ = try Interaction + .filter(Interaction.Columns.threadId == threadId) + .filter(Interaction.Columns.variant == Interaction.Variant.infoDisappearingMessagesUpdate) + .filter(Interaction.Columns.authorId == userPublicKey) + .deleteAll(db) + case .legacyGroup: + _ = try Interaction + .filter(Interaction.Columns.threadId == threadId) + .filter(Interaction.Columns.variant == Interaction.Variant.infoDisappearingMessagesUpdate) + .deleteAll(db) + default: + break + } } let currentTimestampMs: Int64 = SnodeAPI.currentOffsetTimestampMs() diff --git a/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+ExpirationTimers.swift b/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+ExpirationTimers.swift index 0fbde0366..963024ba1 100644 --- a/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+ExpirationTimers.swift +++ b/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+ExpirationTimers.swift @@ -225,6 +225,22 @@ extension MessageReceiver { ) throws { guard threadVariant != .contact || authorId != getUserHexEncodedPublicKey(db) else { return } + switch threadVariant { + case .contact: + _ = try Interaction + .filter(Interaction.Columns.threadId == threadId) + .filter(Interaction.Columns.variant == Interaction.Variant.infoDisappearingMessagesUpdate) + .filter(Interaction.Columns.authorId == authorId) + .deleteAll(db) + case .legacyGroup: + _ = try Interaction + .filter(Interaction.Columns.threadId == threadId) + .filter(Interaction.Columns.variant == Interaction.Variant.infoDisappearingMessagesUpdate) + .deleteAll(db) + default: + break + } + _ = try Interaction .filter(Interaction.Columns.threadId == threadId) .filter(Interaction.Columns.variant == Interaction.Variant.infoDisappearingMessagesUpdate) diff --git a/SessionMessagingKit/SessionUtil/Config Handling/SessionUtil+Contacts.swift b/SessionMessagingKit/SessionUtil/Config Handling/SessionUtil+Contacts.swift index d583ed389..929457f08 100644 --- a/SessionMessagingKit/SessionUtil/Config Handling/SessionUtil+Contacts.swift +++ b/SessionMessagingKit/SessionUtil/Config Handling/SessionUtil+Contacts.swift @@ -185,11 +185,6 @@ internal extension SessionUtil { durationSeconds: data.config.durationSeconds, type: data.config.type ).save(db) - - _ = try Interaction - .filter(Interaction.Columns.threadId == sessionId) - .filter(Interaction.Columns.variant == Interaction.Variant.infoDisappearingMessagesUpdate) - .deleteAll(db) } }