fix logic error for message ttl

pull/731/head
Ryan ZHAO 7 months ago
parent 3667d304f2
commit 79eafa7df8

@ -196,20 +196,24 @@ extension MessageSender {
// MARK: - Convenience
internal static func getSpecifiedTTL(
_ db: Database,
threadId: String,
message: Message,
isSyncMessage: Bool
) -> UInt64? {
guard
let disappearingMessagesConfiguration = try? DisappearingMessagesConfiguration.fetchOne(db, id: threadId),
disappearingMessagesConfiguration.isEnabled,
(
disappearingMessagesConfiguration.type == .disappearAfterSend ||
isSyncMessage
)
else { return nil }
guard let expiresInSeconds = message.expiresInSeconds else { return nil }
// Sync message
if isSyncMessage {
return UInt64(expiresInSeconds * 1000)
}
// Disappear after send
if let expiresStartedAtMs = message.expiresStartedAtMs,
let sentTimestamp = message.sentTimestamp,
UInt64(expiresStartedAtMs) == sentTimestamp
{
return UInt64(expiresInSeconds * 1000)
}
return UInt64(disappearingMessagesConfiguration.durationSeconds * 1000)
return nil
}
}

@ -349,7 +349,7 @@ public final class MessageSender {
recipient: message.recipient!,
data: base64EncodedData,
ttl: MessageSender
.getSpecifiedTTL(db, threadId: threadId, message: message, isSyncMessage: isSyncMessage)
.getSpecifiedTTL(message: message, isSyncMessage: isSyncMessage)
.defaulting(to: message.ttl),
timestampMs: UInt64(messageSendTimestamp)
)

Loading…
Cancel
Save