From 9a528f8c71046d985755049d6fb85be8397d6e67 Mon Sep 17 00:00:00 2001 From: Ryan ZHAO <> Date: Fri, 9 Feb 2024 13:24:49 +1100 Subject: [PATCH] fix disappearing message control message already read on linked devices --- .../DisappearingMessageConfiguration.swift | 32 +++++++++---------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/SessionMessagingKit/Database/Models/DisappearingMessageConfiguration.swift b/SessionMessagingKit/Database/Models/DisappearingMessageConfiguration.swift index 1b684f251..0e9d7281e 100644 --- a/SessionMessagingKit/Database/Models/DisappearingMessageConfiguration.swift +++ b/SessionMessagingKit/Database/Models/DisappearingMessageConfiguration.swift @@ -220,7 +220,8 @@ public extension DisappearingMessagesConfiguration { authorId: String, timestampMs: Int64, serverHash: String?, - updatedConfiguration: DisappearingMessagesConfiguration + updatedConfiguration: DisappearingMessagesConfiguration, + using dependencies: Dependencies = Dependencies() ) throws -> Int64? { if Features.useNewDisappearingMessagesConfig { switch threadVariant { @@ -240,22 +241,18 @@ public extension DisappearingMessagesConfiguration { } } - let expiresStartedAtMs: Double? = { - if updatedConfiguration.type == .disappearAfterSend || - SessionUtil.timestampAlreadyRead( - threadId: threadId, - threadVariant: threadVariant, - timestampMs: timestampMs, - userPublicKey: getUserHexEncodedPublicKey(db), - openGroup: nil - ) - { - return Double(timestampMs) - } - - return nil - }() - + let currentUserPublicKey: String = getUserHexEncodedPublicKey(db, using: dependencies) + let wasRead: Bool = ( + authorId == currentUserPublicKey || + SessionUtil.timestampAlreadyRead( + threadId: threadId, + threadVariant: threadVariant, + timestampMs: timestampMs, + userPublicKey: getUserHexEncodedPublicKey(db), + openGroup: nil + ) + ) + let expiresStartedAtMs: Double? = (updatedConfiguration.type == .disappearAfterSend || wasRead) ? Double(timestampMs) : nil let interaction = try Interaction( serverHash: serverHash, threadId: threadId, @@ -266,6 +263,7 @@ public extension DisappearingMessagesConfiguration { senderName: (authorId != getUserHexEncodedPublicKey(db) ? Profile.displayName(db, id: authorId) : nil) ), timestampMs: timestampMs, + wasRead: wasRead, expiresInSeconds: (threadVariant == .legacyGroup ? nil : updatedConfiguration.durationSeconds), // Do not expire this control message in legacy groups expiresStartedAtMs: (threadVariant == .legacyGroup ? nil : expiresStartedAtMs) ).inserted(db)