Use distinct timestamp for sync message expire timer updates.

This commit is contained in:
Cody Henthorne 2023-04-21 13:44:34 -04:00
parent 1d793de213
commit 4fce7cc3cc

View file

@ -598,7 +598,7 @@ object SyncMessageProcessor {
} }
@Throws(MmsException::class) @Throws(MmsException::class)
private fun handleSynchronizeSentExpirationUpdate(sent: Sent): Long { private fun handleSynchronizeSentExpirationUpdate(sent: Sent, sideEffect: Boolean = false): Long {
log(sent.timestamp, "Synchronize sent expiration update.") log(sent.timestamp, "Synchronize sent expiration update.")
val groupId: GroupId? = getSyncMessageDestination(sent).groupId.orNull() val groupId: GroupId? = getSyncMessageDestination(sent).groupId.orNull()
@ -609,7 +609,7 @@ object SyncMessageProcessor {
} }
val recipient: Recipient = getSyncMessageDestination(sent) val recipient: Recipient = getSyncMessageDestination(sent)
val expirationUpdateMessage: OutgoingMessage = expirationUpdateMessage(recipient, sent.timestamp, sent.message.expireTimer.seconds.inWholeMilliseconds) val expirationUpdateMessage: OutgoingMessage = expirationUpdateMessage(recipient, if (sideEffect) sent.timestamp - 1 else sent.timestamp, sent.message.expireTimer.seconds.inWholeMilliseconds)
val threadId: Long = SignalDatabase.threads.getOrCreateThreadIdFor(recipient) val threadId: Long = SignalDatabase.threads.getOrCreateThreadIdFor(recipient)
val messageId: Long = SignalDatabase.messages.insertMessageOutbox(expirationUpdateMessage, threadId, false, null) val messageId: Long = SignalDatabase.messages.insertMessageOutbox(expirationUpdateMessage, threadId, false, null)
@ -680,7 +680,7 @@ object SyncMessageProcessor {
) )
if (recipient.expiresInSeconds != sent.message.expireTimer) { if (recipient.expiresInSeconds != sent.message.expireTimer) {
handleSynchronizeSentExpirationUpdate(sent) handleSynchronizeSentExpirationUpdate(sent, sideEffect = true)
} }
val threadId = SignalDatabase.threads.getOrCreateThreadIdFor(recipient) val threadId = SignalDatabase.threads.getOrCreateThreadIdFor(recipient)
@ -751,7 +751,7 @@ object SyncMessageProcessor {
) )
if (recipient.expiresInSeconds != sent.message.expireTimer) { if (recipient.expiresInSeconds != sent.message.expireTimer) {
handleSynchronizeSentExpirationUpdate(sent) handleSynchronizeSentExpirationUpdate(sent, sideEffect = true)
} }
val threadId = SignalDatabase.threads.getOrCreateThreadIdFor(recipient) val threadId = SignalDatabase.threads.getOrCreateThreadIdFor(recipient)
@ -808,7 +808,7 @@ object SyncMessageProcessor {
val bodyRanges = sent.message.bodyRangesList.filterNot { it.hasMentionUuid() }.toBodyRangeList() val bodyRanges = sent.message.bodyRangesList.filterNot { it.hasMentionUuid() }.toBodyRangeList()
if (recipient.expiresInSeconds != sent.message.expireTimer) { if (recipient.expiresInSeconds != sent.message.expireTimer) {
handleSynchronizeSentExpirationUpdate(sent) handleSynchronizeSentExpirationUpdate(sent, sideEffect = true)
} }
val threadId = SignalDatabase.threads.getOrCreateThreadIdFor(recipient) val threadId = SignalDatabase.threads.getOrCreateThreadIdFor(recipient)