From 84a2832a651bde0e4c31cee99ecce56aec9b8600 Mon Sep 17 00:00:00 2001 From: Clark Date: Tue, 28 Nov 2023 13:04:21 -0500 Subject: [PATCH] Fix getAndPossiblyMerge to run after successful transaction in case of nested transactions. --- .../thoughtcrime/securesms/database/RecipientTable.kt | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt index 8bd56bc5e5..4e696e4cf7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/RecipientTable.kt @@ -467,11 +467,9 @@ open class RecipientTable(context: Context, databaseHelper: SignalDatabase) : Da Log.d(TAG, "[getAndPossiblyMerge] Requires a transaction.") val db = writableDatabase - var transactionSuccessful = false lateinit var result: ProcessPnpTupleResult - db.beginTransaction() - try { + db.withinTransaction { result = processPnpTuple(e164 = e164, pni = pni, aci = aci, pniVerified = pniVerified, changeSelf = changeSelf) if (result.operations.isNotEmpty() || result.requiredInsert) { @@ -480,12 +478,7 @@ open class RecipientTable(context: Context, databaseHelper: SignalDatabase) : Da Log.i(TAG, "[getAndPossiblyMerge] ($aci, $pniString, $e164String) BreadCrumbs: ${result.breadCrumbs}, Operations: ${result.operations}, RequiredInsert: ${result.requiredInsert}, FinalId: ${result.finalId}") } - db.setTransactionSuccessful() - transactionSuccessful = true - } finally { - db.endTransaction() - - if (transactionSuccessful) { + db.runPostSuccessfulTransaction { if (result.affectedIds.isNotEmpty()) { result.affectedIds.forEach { ApplicationDependencies.getDatabaseObserver().notifyRecipientChanged(it) } RetrieveProfileJob.enqueue(result.affectedIds)