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(