only start disappearing messages after a message successfully sent

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

@ -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)

@ -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

Loading…
Cancel
Save