From a64d054537e157e2cf5268a0d1a9ddd8e2e1d2b6 Mon Sep 17 00:00:00 2001 From: ryanzhao Date: Fri, 20 Oct 2023 13:44:15 +1100 Subject: [PATCH] only start disappearing messages after a message successfully sent --- .../Database/Models/Interaction.swift | 9 +-------- .../Sending & Receiving/MessageSender.swift | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/SessionMessagingKit/Database/Models/Interaction.swift b/SessionMessagingKit/Database/Models/Interaction.swift index c68ca5cd0..292b88acd 100644 --- a/SessionMessagingKit/Database/Models/Interaction.swift +++ b/SessionMessagingKit/Database/Models/Interaction.swift @@ -388,7 +388,6 @@ public struct Interaction: Codable, Identifiable, Equatable, FetchableRecord, Mu } self.expiresInSeconds = disappearingMessagesConfiguration.durationSeconds - self.expiresStartedAtMs = disappearingMessagesConfiguration.type == .disappearAfterSend ? Double(self.timestampMs) : nil } } @@ -459,13 +458,7 @@ public struct Interaction: Codable, Identifiable, Equatable, FetchableRecord, Mu } // Start the disappearing messages timer if needed - let shouldStartExipring: Bool = try { - guard self.expiresStartedAtMs != nil else { return false } - guard self.variant == .standardOutgoing else { return true } - return try self.recipientStates.filter(RecipientState.Columns.state != RecipientState.State.sent).isEmpty(db) - }() - - if shouldStartExipring { + if self.expiresStartedAtMs != nil { JobRunner.upsert( db, job: DisappearingMessagesJob.updateNextRunIfNeeded(db) diff --git a/SessionMessagingKit/Sending & Receiving/MessageSender.swift b/SessionMessagingKit/Sending & Receiving/MessageSender.swift index 6721ad226..34cef1a23 100644 --- a/SessionMessagingKit/Sending & Receiving/MessageSender.swift +++ b/SessionMessagingKit/Sending & Receiving/MessageSender.swift @@ -970,7 +970,7 @@ public final class MessageSender { let serverHash: String = message.serverHash { let expirationTimestampMs: Int64 = Int64(startedAtMs + expiresInSeconds * 1000) - JobRunner.add( + dependencies.jobRunner.add( db, job: Job( variant: .expirationUpdate, @@ -980,9 +980,23 @@ public final class MessageSender { serverHashes: [serverHash], expirationTimestampMs: expirationTimestampMs ) - ) + ), + canStartJob: true, + using: dependencies ) } + + dependencies.jobRunner.upsert( + db, + job: DisappearingMessagesJob.updateNextRunIfNeeded( + db, + interaction: interaction, + startedAtMs: Double(interaction.timestampMs) + ), + canStartJob: true, + using: dependencies + ) + } // Mark the message as sent