diff --git a/SessionMessagingKit/Jobs/Types/DisappearingMessagesJob.swift b/SessionMessagingKit/Jobs/Types/DisappearingMessagesJob.swift index d07fe7e88..e673b5661 100644 --- a/SessionMessagingKit/Jobs/Types/DisappearingMessagesJob.swift +++ b/SessionMessagingKit/Jobs/Types/DisappearingMessagesJob.swift @@ -94,7 +94,7 @@ public extension DisappearingMessagesJob { let serverHashes = interactions.compactMap { $0.serverHash } guard let expiresInSeconds = expiresInSeconds, !serverHashes.isEmpty else { return } - let expirationTimestamp: Int64 = Int64(ceil(startedAtMs + expiresInSeconds)) + let expirationTimestamp: Int64 = Int64(ceil(startedAtMs + expiresInSeconds * 1000)) let userPublicKey: String = getUserHexEncodedPublicKey(db) let threadId: String = interactions[0].threadId diff --git a/SessionMessagingKit/Messages/Control Messages/SyncedExpiriesMessage.swift b/SessionMessagingKit/Messages/Control Messages/SyncedExpiriesMessage.swift index 95f7ababa..897b94b64 100644 --- a/SessionMessagingKit/Messages/Control Messages/SyncedExpiriesMessage.swift +++ b/SessionMessagingKit/Messages/Control Messages/SyncedExpiriesMessage.swift @@ -36,6 +36,8 @@ public final class SyncedExpiriesMessage: ControlMessage { } public override func encode(to encoder: Encoder) throws { + try super.encode(to: encoder) + var container: KeyedEncodingContainer = encoder.container(keyedBy: CodingKeys.self) try container.encode(conversationExpiries, forKey: .conversationExpiries) diff --git a/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+SyncedExpiriesMessage.swift b/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+SyncedExpiriesMessage.swift index d95ffb84b..344e2c30f 100644 --- a/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+SyncedExpiriesMessage.swift +++ b/SessionMessagingKit/Sending & Receiving/Message Handling/MessageReceiver+SyncedExpiriesMessage.swift @@ -11,6 +11,21 @@ extension MessageReceiver { message: SyncedExpiriesMessage, dependencies: SMKDependencies ) throws { - print("Ryan Test: Receive SyncedExpiriesMessage") + let userPublicKey: String = getUserHexEncodedPublicKey(db, dependencies: dependencies) + guard userPublicKey == message.sender else { return } + + message.conversationExpiries.forEach { (syncTarget, expiries) in + guard let disappearingMessageConfiguration = try? DisappearingMessagesConfiguration.fetchOne(db, id: syncTarget) else { return } + expiries.forEach { syncExpiry in + let startedAtMs: Double = Double(syncExpiry.expirationTimestamp) - disappearingMessageConfiguration.durationSeconds * 1000 + + let changeCount: Int? = try? Interaction + .filter( + Interaction.Columns.threadId == syncTarget && + Interaction.Columns.serverHash == syncExpiry.serverHash + ) + .updateAll(db, Interaction.Columns.expiresStartedAtMs.set(to: startedAtMs)) + } + } } }