From 0c86ff1f842641aa1f2a3560ae78eaa12bdfaa52 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Thu, 5 Dec 2024 13:49:07 -0400 Subject: [PATCH] Fix hot loop when creating a subscription to remote backups. --- .../ui/subscription/MessageBackupsFlowViewModel.kt | 12 ++++++++++++ .../main/java/org/signal/billing/BillingApiImpl.kt | 2 -- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsFlowViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsFlowViewModel.kt index ac70a77147..832d6ce1a5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsFlowViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsFlowViewModel.kt @@ -95,6 +95,18 @@ class MessageBackupsFlowViewModel( Log.d(TAG, "Got successful purchase result for purchase at ${result.purchaseTime}") val id = internalStateFlow.value.inAppPayment!!.id + if (result.isAcknowledged) { + Log.w(TAG, "Payment is already acknowledged. Ignoring.") + + internalStateFlow.update { + it.copy( + stage = MessageBackupsStage.COMPLETED + ) + } + + return@collect + } + try { Log.d(TAG, "Attempting to handle successful purchase.") diff --git a/billing/src/main/java/org/signal/billing/BillingApiImpl.kt b/billing/src/main/java/org/signal/billing/BillingApiImpl.kt index 1e3e9a738b..556fb14aa0 100644 --- a/billing/src/main/java/org/signal/billing/BillingApiImpl.kt +++ b/billing/src/main/java/org/signal/billing/BillingApiImpl.kt @@ -202,8 +202,6 @@ internal class BillingApiImpl( billingClient.queryPurchasesAsync(param) } - purchasesUpdatedListener.onPurchasesUpdated(result.billingResult, result.purchasesList) - val purchase = result.purchasesList.maxByOrNull { it.purchaseTime } ?: return BillingPurchaseResult.None return BillingPurchaseResult.Success(