only start disappearing messages after a message successfully sent

pull/731/head
ryanzhao 9 months ago
parent 71fa811064
commit a64d054537

@ -388,7 +388,6 @@ public struct Interaction: Codable, Identifiable, Equatable, FetchableRecord, Mu
} }
self.expiresInSeconds = disappearingMessagesConfiguration.durationSeconds 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 // Start the disappearing messages timer if needed
let shouldStartExipring: Bool = try { if self.expiresStartedAtMs != nil {
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( JobRunner.upsert(
db, db,
job: DisappearingMessagesJob.updateNextRunIfNeeded(db) job: DisappearingMessagesJob.updateNextRunIfNeeded(db)

@ -970,7 +970,7 @@ public final class MessageSender {
let serverHash: String = message.serverHash let serverHash: String = message.serverHash
{ {
let expirationTimestampMs: Int64 = Int64(startedAtMs + expiresInSeconds * 1000) let expirationTimestampMs: Int64 = Int64(startedAtMs + expiresInSeconds * 1000)
JobRunner.add( dependencies.jobRunner.add(
db, db,
job: Job( job: Job(
variant: .expirationUpdate, variant: .expirationUpdate,
@ -980,9 +980,23 @@ public final class MessageSender {
serverHashes: [serverHash], serverHashes: [serverHash],
expirationTimestampMs: expirationTimestampMs 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 // Mark the message as sent

Loading…
Cancel
Save