From faa42082090ffdf52fb88ace101a948d778f10ed Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Thu, 5 Dec 2024 15:23:03 -0500 Subject: [PATCH] Fix thread merge update archive NPE. --- .../v2/exporters/ChatItemArchiveExporter.kt | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 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 28147f4141..4ffd3f9162 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 @@ -233,7 +233,7 @@ class ChatItemArchiveExporter( } MessageTypes.isThreadMergeType(record.type) -> { - builder.updateMessage = record.toRemoteThreadMergeUpdate() + builder.updateMessage = record.toRemoteThreadMergeUpdate() ?: continue } MessageTypes.isGroupV2(record.type) && MessageTypes.isGroupUpdate(record.type) -> { @@ -488,19 +488,20 @@ private fun BackupMessageRecord.toRemoteSessionSwitchoverUpdate(): ChatUpdateMes ) } -private fun BackupMessageRecord.toRemoteThreadMergeUpdate(): ChatUpdateMessage { +private fun BackupMessageRecord.toRemoteThreadMergeUpdate(): ChatUpdateMessage? { if (this.body == null) { - return ChatUpdateMessage(threadMerge = ThreadMergeChatUpdate()) + return null } - return ChatUpdateMessage( - threadMerge = try { - val event = ThreadMergeEvent.ADAPTER.decode(Base64.decodeOrThrow(this.body)) - ThreadMergeChatUpdate(event.previousE164.e164ToLong()!!) - } catch (e: IOException) { - ThreadMergeChatUpdate() + try { + val e164 = ThreadMergeEvent.ADAPTER.decode(Base64.decodeOrThrow(this.body)).previousE164.e164ToLong() + if (e164 != null) { + return ChatUpdateMessage(threadMerge = ThreadMergeChatUpdate(e164)) } - ) + } catch (_: IOException) { + } + + return null } private fun BackupMessageRecord.toRemoteGroupUpdate(): ChatUpdateMessage? {