diff --git a/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift b/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift index ba1d355ef..81da7e2e3 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageReceiver.swift @@ -222,7 +222,13 @@ public enum MessageReceiver { } // Update any disappearing messages configuration if needed - try MessageReceiver.updateDisappearingMessagesConfigurationIfNeeded(db, threadId: message.threadId, proto: proto) + try MessageReceiver.updateDisappearingMessagesConfigurationIfNeeded( + db, + threadId: message.threadId, + sender: message.sender, + sentTimestamp: message.sentTimestamp, + proto: proto + ) // Perform any required post-handling logic try MessageReceiver.postHandleMessage(db, message: message, openGroupId: openGroupId) @@ -310,9 +316,11 @@ public enum MessageReceiver { internal static func updateDisappearingMessagesConfigurationIfNeeded( _ db: Database, threadId: String?, + sender: String?, + sentTimestamp: UInt64?, proto: SNProtoContent ) throws { - guard let threadId = threadId, proto.hasLastDisappearingMessageChangeTimestamp else { return } + guard let threadId = threadId, let sender = sender, proto.hasLastDisappearingMessageChangeTimestamp else { return } let protoLastChangeTimestampMs: Int64 = Int64(proto.lastDisappearingMessageChangeTimestamp) let localConfig: DisappearingMessagesConfiguration = try DisappearingMessagesConfiguration @@ -332,6 +340,20 @@ public enum MessageReceiver { lastChangeTimestampMs: protoLastChangeTimestampMs ) + _ = try Interaction( + serverHash: nil, // Intentionally null so sync messages are seen as duplicates + threadId: threadId, + authorId: sender, + variant: .infoDisappearingMessagesUpdate, + body: remoteConfig.messageInfoString( + with: (sender != getUserHexEncodedPublicKey(db) ? + Profile.displayName(db, id: sender) : + nil + ) + ), + timestampMs: Int64(sentTimestamp ?? 0) + ).inserted(db) + try remoteConfig.save(db) }