From 0c4725dfa77e14af75d67740e4d8541865df53be Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Tue, 3 Sep 2024 15:43:01 -0400 Subject: [PATCH] Fix unnecessary timer change message insert on sync messages. --- .../InternalConversationSettingsFragment.kt | 2 +- .../securesms/logsubmit/LogSectionCapabilities.java | 1 + .../securesms/messages/SyncMessageProcessor.kt | 11 ++++++++--- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/InternalConversationSettingsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/InternalConversationSettingsFragment.kt index 94885129f2..39db36335c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/InternalConversationSettingsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/InternalConversationSettingsFragment.kt @@ -343,7 +343,7 @@ class InternalConversationSettingsFragment : DSLSettingsFragment( TextUtils.concat( colorize("DeleteSync", capabilities.deleteSync), ", ", - colorize("Expire Timer Version", capabilities.versionedExpirationTimer) + colorize("VersionedExpirationTimer", capabilities.versionedExpirationTimer) ) } else { "Recipient not found!" diff --git a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionCapabilities.java b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionCapabilities.java index 99c9df98fd..f6c70ee30b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionCapabilities.java +++ b/app/src/main/java/org/thoughtcrime/securesms/logsubmit/LogSectionCapabilities.java @@ -35,6 +35,7 @@ public final class LogSectionCapabilities implements LogSection { StringBuilder builder = new StringBuilder().append("-- Local").append("\n") .append("DeleteSync: ").append(localCapabilities.getDeleteSync()).append("\n") + .append("VersionedExpirationTimer: ").append(localCapabilities.getVersionedExpirationTimer()).append("\n") .append("\n") .append("-- Global").append("\n"); diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/SyncMessageProcessor.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/SyncMessageProcessor.kt index 7945a1e819..c862152aa5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/SyncMessageProcessor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/SyncMessageProcessor.kt @@ -130,6 +130,7 @@ import java.util.Optional import java.util.UUID import java.util.concurrent.TimeUnit import kotlin.time.Duration +import kotlin.time.Duration.Companion.seconds object SyncMessageProcessor { @@ -669,7 +670,7 @@ object SyncMessageProcessor { @Throws(MmsException::class) private fun handleSynchronizeSentExpirationUpdate(sent: Sent, sideEffect: Boolean = false): Long { - log(sent.timestamp!!, "Synchronize sent expiration update.") + log(sent.timestamp!!, "Synchronize sent expiration update. sideEffect: $sideEffect") val groupId: GroupId? = getSyncMessageDestination(sent).groupId.orNull() @@ -694,8 +695,12 @@ object SyncMessageProcessor { SignalDatabase.messages.markAsSent(messageId, true) } else if (sent.message!!.expireTimerVersion!! >= recipient.expireTimerVersion) { SignalDatabase.recipients.setExpireMessages(recipient.id, sent.message!!.expireTimerDuration.inWholeSeconds.toInt(), sent.message!!.expireTimerVersion!!) - val messageId: Long = SignalDatabase.messages.insertMessageOutbox(expirationUpdateMessage, threadId, false, null) - SignalDatabase.messages.markAsSent(messageId, true) + + if (sent.message!!.expireTimerDuration != recipient.expiresInSeconds.seconds) { + log(sent.timestamp!!, "Not inserted update message as timer value did not change") + val messageId: Long = SignalDatabase.messages.insertMessageOutbox(expirationUpdateMessage, threadId, false, null) + SignalDatabase.messages.markAsSent(messageId, true) + } } else { warn(sent.timestamp!!, "[SynchronizeExpiration] Ignoring expire timer update with old version. Received: ${sent.message!!.expireTimerVersion}, Current: ${recipient.expireTimerVersion}") }