From 464345ee5f73062c046ea686bea9303d46f31bca Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 3 Dec 2025 11:23:05 -0500 Subject: [PATCH] Fix possible issue when exporting thread merge update. --- .../backup/v2/exporters/ChatItemArchiveExporter.kt | 6 +++++- .../backup/v2/processor/AccountDataArchiveProcessor.kt | 1 - 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/exporters/ChatItemArchiveExporter.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/exporters/ChatItemArchiveExporter.kt index bc8863c750..8f431435c3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/exporters/ChatItemArchiveExporter.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/exporters/ChatItemArchiveExporter.kt @@ -312,7 +312,7 @@ class ChatItemArchiveExporter( } MessageTypes.isThreadMergeType(record.type) -> { - builder.updateMessage = record.toRemoteThreadMergeUpdate(record.dateSent)?.takeIf { exportState.recipientIdToAci[builder.authorId] != null } ?: continue + builder.updateMessage = record.toRemoteThreadMergeUpdate(record.dateSent)?.takeIf { builder.authorIsAciContact(exportState) } ?: continue transformTimer.emit("thread-merge") } @@ -1721,6 +1721,10 @@ private fun ChatItem.withDowngradeVoiceNotes(): ChatItem { ) } +private fun ChatItem.Builder.authorIsAciContact(exportState: ExportState): Boolean { + return exportState.recipientIdToAci[this.authorId] != null && this.authorId != exportState.selfRecipientId.toLong() && this.authorId != exportState.releaseNoteRecipientId +} + private fun Cursor.toBackupMessageRecord(pastIds: Set, backupStartTime: Long): BackupMessageRecord? { val id = this.requireLong(MessageTable.ID) if (pastIds.contains(id)) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/processor/AccountDataArchiveProcessor.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/processor/AccountDataArchiveProcessor.kt index 77397adc4c..b84c61a752 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/processor/AccountDataArchiveProcessor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/processor/AccountDataArchiveProcessor.kt @@ -9,7 +9,6 @@ import android.content.Context import okio.ByteString.Companion.EMPTY import okio.ByteString.Companion.toByteString import org.signal.core.util.UuidUtil -import org.signal.core.util.isNotNullOrBlank import org.signal.core.util.logging.Log import org.signal.core.util.toByteArray import org.signal.libsignal.zkgroup.backups.BackupLevel