diff --git a/Session/Conversations/ConversationVC+Interaction.swift b/Session/Conversations/ConversationVC+Interaction.swift index 805efd618..d53c1296f 100644 --- a/Session/Conversations/ConversationVC+Interaction.swift +++ b/Session/Conversations/ConversationVC+Interaction.swift @@ -621,18 +621,6 @@ extension ConversationVC: threadVariant: threadVariant, using: dependencies ) - - // Trigger disappear after read - dependencies.jobRunner.upsert( - db, - job: DisappearingMessagesJob.updateNextRunIfNeeded( - db, - interaction: insertedInteraction, - startedAtMs: TimeInterval(SnodeAPI.currentOffsetTimestampMs()) - ), - canStartJob: true, - using: dependencies - ) } .subscribe(on: DispatchQueue.global(qos: .userInitiated)) .sinkUntilComplete( diff --git a/SessionMessagingKit/Database/Models/Interaction.swift b/SessionMessagingKit/Database/Models/Interaction.swift index 34f89d704..c68ca5cd0 100644 --- a/SessionMessagingKit/Database/Models/Interaction.swift +++ b/SessionMessagingKit/Database/Models/Interaction.swift @@ -459,7 +459,13 @@ public struct Interaction: Codable, Identifiable, Equatable, FetchableRecord, Mu } // Start the disappearing messages timer if needed - if self.expiresStartedAtMs != nil { + 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 { JobRunner.upsert( db, job: DisappearingMessagesJob.updateNextRunIfNeeded(db)