From ba720efe616aa810798208691ef2ff10e4bb9372 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Tue, 3 Mar 2026 09:50:29 -0500 Subject: [PATCH] Skip quotes with authors that lack ACI and E164 during archive export. --- .../thoughtcrime/securesms/backup/v2/ArchiveErrorCases.kt | 4 ++++ .../securesms/backup/v2/exporters/ChatItemArchiveExporter.kt | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ArchiveErrorCases.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ArchiveErrorCases.kt index 28948db128..61df38a6c4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ArchiveErrorCases.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ArchiveErrorCases.kt @@ -218,6 +218,10 @@ object ExportOddities { return log(sentTimestamp, "Quote author was not found in the exported recipients. Removing the quote.") } + fun quoteAuthorHasNoAciOrE164(sentTimestamp: Long): String { + return log(sentTimestamp, "Quote author has neither an ACI nor an E164. Removing the quote.") + } + fun emptyQuote(sentTimestamp: Long): String { return log(sentTimestamp, "Quote had no text or attachments. Removing it.") } 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 bb350f6e5c..5fa60a272d 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 @@ -1179,6 +1179,11 @@ private fun BackupMessageRecord.toRemoteQuote(exportState: ExportState, attachme return null } + if (exportState.recipientIdToAci[this.quoteAuthor] == null && exportState.recipientIdToE164[this.quoteAuthor] == null) { + Log.w(TAG, ExportOddities.quoteAuthorHasNoAciOrE164(this.dateSent)) + return null + } + val localType = QuoteModel.Type.fromCode(this.quoteType) val remoteType = when (localType) { QuoteModel.Type.NORMAL -> {