From 258f1d0baff2a79ba32bce2bcc6a064c2b2ce3db Mon Sep 17 00:00:00 2001 From: Noelia Alcala Date: Thu, 23 Jan 2025 19:40:57 +0000 Subject: [PATCH] Implement new argument in purchase() method in SubscriptionsManager --- .../com/duckduckgo/subscriptions/impl/SubscriptionsManager.kt | 4 +++- .../subscriptions/impl/billing/PlayBillingManager.kt | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/subscriptions/subscriptions-impl/src/main/java/com/duckduckgo/subscriptions/impl/SubscriptionsManager.kt b/subscriptions/subscriptions-impl/src/main/java/com/duckduckgo/subscriptions/impl/SubscriptionsManager.kt index 150f74905c81..33d0f028c472 100644 --- a/subscriptions/subscriptions-impl/src/main/java/com/duckduckgo/subscriptions/impl/SubscriptionsManager.kt +++ b/subscriptions/subscriptions-impl/src/main/java/com/duckduckgo/subscriptions/impl/SubscriptionsManager.kt @@ -105,11 +105,12 @@ interface SubscriptionsManager { suspend fun getSubscriptionOffer(): List /** - * Launches the purchase flow for a given plan id + * Launches the purchase flow for a given combination of plan id and offer id */ suspend fun purchase( activity: Activity, planId: String, + offerId: String? = null, ) /** @@ -747,6 +748,7 @@ class RealSubscriptionsManager @Inject constructor( override suspend fun purchase( activity: Activity, planId: String, + offerId: String?, ) { try { _currentPurchaseState.emit(CurrentPurchase.PreFlowInProgress) diff --git a/subscriptions/subscriptions-impl/src/main/java/com/duckduckgo/subscriptions/impl/billing/PlayBillingManager.kt b/subscriptions/subscriptions-impl/src/main/java/com/duckduckgo/subscriptions/impl/billing/PlayBillingManager.kt index 0bc34c4b15cf..97200bcfc110 100644 --- a/subscriptions/subscriptions-impl/src/main/java/com/duckduckgo/subscriptions/impl/billing/PlayBillingManager.kt +++ b/subscriptions/subscriptions-impl/src/main/java/com/duckduckgo/subscriptions/impl/billing/PlayBillingManager.kt @@ -75,6 +75,7 @@ interface PlayBillingManager { activity: Activity, planId: String, externalId: String, + offerId: String? = null, ) } @@ -173,6 +174,7 @@ class RealPlayBillingManager @Inject constructor( activity: Activity, planId: String, externalId: String, + offerId: String?, ) = withContext(dispatcherProvider.io()) { if (!billingClient.ready) { logcat { "Service not ready" } @@ -183,7 +185,7 @@ class RealPlayBillingManager @Inject constructor( val offerToken = productDetails ?.subscriptionOfferDetails - ?.find { it.basePlanId == planId } + ?.find { it.basePlanId == planId && it.offerId == offerId } ?.offerToken if (productDetails == null || offerToken == null) {