From 6738af200f03a9cbe57db39a40f1e5feb14256d2 Mon Sep 17 00:00:00 2001 From: ryanzhao Date: Wed, 5 Jul 2023 09:57:58 +1000 Subject: [PATCH] update expiration of sync visible messages --- .../Jobs/Types/ExpirationUpdateJob.swift | 26 +++++++++++++++++++ .../Sending & Receiving/MessageSender.swift | 4 +++ 2 files changed, 30 insertions(+) diff --git a/SessionMessagingKit/Jobs/Types/ExpirationUpdateJob.swift b/SessionMessagingKit/Jobs/Types/ExpirationUpdateJob.swift index 871fdc837..77e3584a3 100644 --- a/SessionMessagingKit/Jobs/Types/ExpirationUpdateJob.swift +++ b/SessionMessagingKit/Jobs/Types/ExpirationUpdateJob.swift @@ -90,6 +90,32 @@ public enum ExpirationUpdateJob: JobExecutor { } ) } + + public static func updateExpirationIfNeeded(_ db: Database, interactionId: Int64) { + guard + let interacion: Interaction = try? Interaction.fetchOne(db, id: interactionId), + let startedAtMs: TimeInterval = interacion.expiresStartedAtMs, + let expiresInSeconds: TimeInterval = interacion.expiresInSeconds, + let serverHash: String = interacion.serverHash + else { + return + } + let threadId: String = interacion.threadId + let expirationTimestampMs: Int64 = Int64(startedAtMs + expiresInSeconds * 1000) + + JobRunner.add( + db, + job: Job( + variant: .expirationUpdate, + behaviour: .runOnce, + threadId: threadId, + details: ExpirationUpdateJob.Details( + serverHashes: [ serverHash ], + expirationTimestampMs: expirationTimestampMs + ) + ) + ) + } } // MARK: - ExpirationUpdateJob.Details diff --git a/SessionMessagingKit/Sending & Receiving/MessageSender.swift b/SessionMessagingKit/Sending & Receiving/MessageSender.swift index 6c97dc685..02115bdea 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageSender.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageSender.swift @@ -945,6 +945,10 @@ public final class MessageSender { ), openGroupServerMessageId: message.openGroupServerMessageId.map { Int64($0) } ).update(db) + + if interaction.isExpiringMessage { + + } } // Mark the message as sent