From 2a0723ca8d18afc9e549ffb1897cce2e80b5b39d Mon Sep 17 00:00:00 2001 From: Jonatan Rhodin Date: Tue, 12 Sep 2023 16:12:18 +0200 Subject: [PATCH] Add purchase verification function to payment repository --- .../mullvad/mullvadvpn/payment/PaymentRepository.kt | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/android/lib/payment/src/main/kotlin/net/mullvad/mullvadvpn/payment/PaymentRepository.kt b/android/lib/payment/src/main/kotlin/net/mullvad/mullvadvpn/payment/PaymentRepository.kt index 99c6f9ca4196..ebd959a513c9 100644 --- a/android/lib/payment/src/main/kotlin/net/mullvad/mullvadvpn/payment/PaymentRepository.kt +++ b/android/lib/payment/src/main/kotlin/net/mullvad/mullvadvpn/payment/PaymentRepository.kt @@ -3,9 +3,11 @@ package net.mullvad.mullvadvpn.payment import kotlinx.coroutines.flow.singleOrNull import net.mullvad.mullvadvpn.lib.billing.BillingRepository import net.mullvad.mullvadvpn.lib.billing.model.BillingProduct +import net.mullvad.mullvadvpn.lib.billing.model.BillingPurchase import net.mullvad.mullvadvpn.lib.billing.model.PurchaseEvent import net.mullvad.mullvadvpn.lib.billing.model.PurchaseFlowResult import net.mullvad.mullvadvpn.lib.billing.model.QueryProductResult +import net.mullvad.mullvadvpn.lib.billing.model.QueryPurchasesResult class PaymentRepository( private val billingRepository: BillingRepository, @@ -36,7 +38,7 @@ class PaymentRepository( } is PurchaseEvent.PurchaseCompleted -> { // Verify towards api - if (verifyPurchase()) { + if (verifyPurchase(purchaseEvent.purchases.first())) { PurchaseResult.PurchaseCompleted } else { PurchaseResult.VerificationError @@ -57,6 +59,13 @@ class PaymentRepository( } } + suspend fun verifyPurchases() { + val result = billingRepository.queryPurchases() + if (result is QueryPurchasesResult.PurchaseFound) { + verifyPurchase(result.purchase) + } + } + private suspend fun getBillingProducts(): BillingPaymentAvailability = when (val result = billingRepository.queryProducts()) { is QueryProductResult.Ok -> @@ -75,7 +84,7 @@ class PaymentRepository( return "BOOPITOBOP" } - private fun verifyPurchase(): Boolean { + private fun verifyPurchase(purchase: BillingPurchase): Boolean { // Placeholder function return true }