Skip to content

Commit 99372f8

Browse files
committed
Addressed PR feedback
1 parent 9839c03 commit 99372f8

7 files changed

Lines changed: 33 additions & 140 deletions

File tree

apiTester/src/commonMain/kotlin/com/revenuecat/purchases/kmp/apitester/PaywallPurchaseLogicAPI.kt

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
package com.revenuecat.purchases.kmp.apitester
22

33
import com.revenuecat.purchases.kmp.models.CustomerInfo
4-
import com.revenuecat.purchases.kmp.models.GoogleReplacementMode
54
import com.revenuecat.purchases.kmp.models.Offering
65
import com.revenuecat.purchases.kmp.models.Package
76
import com.revenuecat.purchases.kmp.models.PurchasesError
87
import com.revenuecat.purchases.kmp.models.PurchasesErrorCode
9-
import com.revenuecat.purchases.kmp.models.SubscriptionOption
108
import com.revenuecat.purchases.kmp.ui.revenuecatui.PaywallOptions
119
import com.revenuecat.purchases.kmp.ui.revenuecatui.PaywallPurchaseLogic
1210
import com.revenuecat.purchases.kmp.ui.revenuecatui.PaywallPurchaseLogicParams
@@ -19,9 +17,6 @@ private class PaywallPurchaseLogicAPI {
1917
val purchaseLogic = object : PaywallPurchaseLogic {
2018
override suspend fun performPurchase(params: PaywallPurchaseLogicParams): PurchaseLogicResult {
2119
val pkg: Package = params.rcPackage
22-
val oldProductId: String? = params.oldProductId
23-
val replacementMode: com.revenuecat.purchases.kmp.models.ReplacementMode? = params.replacementMode
24-
val subscriptionOption: SubscriptionOption? = params.subscriptionOption
2520
return PurchaseLogicResult.Success()
2621
}
2722

@@ -39,13 +34,6 @@ private class PaywallPurchaseLogicAPI {
3934
)
4035
val errorDetails: PurchasesError? = (errorWithDetails as PurchaseLogicResult.Error).errorDetails
4136

42-
// PaywallPurchaseLogicParams.Builder
43-
val params: PaywallPurchaseLogicParams = PaywallPurchaseLogicParams.Builder(rcPackage)
44-
.oldProductId("com.example.old_product")
45-
.replacementMode(GoogleReplacementMode.CHARGE_PRORATED_PRICE)
46-
.subscriptionOption(null)
47-
.build()
48-
4937
val options: PaywallOptions = PaywallOptions(
5038
dismissRequest = {}
5139
) {
Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,42 @@
11
package com.revenuecat.purchases.kmp.sample
22

3+
import com.revenuecat.purchases.kmp.Purchases
4+
import com.revenuecat.purchases.kmp.ktx.awaitPurchase
5+
import com.revenuecat.purchases.kmp.ktx.awaitRestore
36
import com.revenuecat.purchases.kmp.models.CustomerInfo
7+
import com.revenuecat.purchases.kmp.models.PurchasesException
8+
import com.revenuecat.purchases.kmp.models.PurchasesTransactionException
49
import com.revenuecat.purchases.kmp.ui.revenuecatui.PaywallPurchaseLogic
510
import com.revenuecat.purchases.kmp.ui.revenuecatui.PaywallPurchaseLogicParams
611
import com.revenuecat.purchases.kmp.ui.revenuecatui.PurchaseLogicResult
7-
import kotlinx.coroutines.delay
812

913
internal class SamplePurchaseLogic : PaywallPurchaseLogic {
1014
override suspend fun performPurchase(params: PaywallPurchaseLogicParams): PurchaseLogicResult {
1115
println("[SamplePurchaseLogic] performPurchase called for: ${params.rcPackage.identifier}")
12-
delay(2000)
13-
println("[SamplePurchaseLogic] performPurchase returning success")
14-
return PurchaseLogicResult.Success()
16+
return try {
17+
Purchases.sharedInstance.awaitPurchase(params.rcPackage)
18+
println("[SamplePurchaseLogic] performPurchase returning success")
19+
PurchaseLogicResult.Success()
20+
} catch (e: PurchasesTransactionException) {
21+
if (e.userCancelled) {
22+
println("[SamplePurchaseLogic] performPurchase cancelled by user")
23+
PurchaseLogicResult.Cancellation()
24+
} else {
25+
println("[SamplePurchaseLogic] performPurchase error: ${e.error}")
26+
PurchaseLogicResult.Error(e.error)
27+
}
28+
}
1529
}
1630

1731
override suspend fun performRestore(customerInfo: CustomerInfo): PurchaseLogicResult {
1832
println("[SamplePurchaseLogic] performRestore called")
19-
delay(2000)
20-
println("[SamplePurchaseLogic] performRestore returning success")
21-
return PurchaseLogicResult.Success()
33+
return try {
34+
Purchases.sharedInstance.awaitRestore()
35+
println("[SamplePurchaseLogic] performRestore returning success")
36+
PurchaseLogicResult.Success()
37+
} catch (e: PurchasesException) {
38+
println("[SamplePurchaseLogic] performRestore error: ${e.error}")
39+
PurchaseLogicResult.Error(e.error)
40+
}
2241
}
2342
}

revenuecatui/api/revenuecatui.api

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -73,19 +73,7 @@ public abstract interface class com/revenuecat/purchases/kmp/ui/revenuecatui/Pay
7373

7474
public final class com/revenuecat/purchases/kmp/ui/revenuecatui/PaywallPurchaseLogicParams {
7575
public static final field $stable I
76-
public final fun getOldProductId ()Ljava/lang/String;
7776
public final fun getRcPackage ()Lcom/revenuecat/purchases/kmp/models/Package;
78-
public final fun getReplacementMode ()Lcom/revenuecat/purchases/kmp/models/ReplacementMode;
79-
public final fun getSubscriptionOption ()Lcom/revenuecat/purchases/kmp/models/SubscriptionOption;
80-
}
81-
82-
public final class com/revenuecat/purchases/kmp/ui/revenuecatui/PaywallPurchaseLogicParams$Builder {
83-
public static final field $stable I
84-
public fun <init> (Lcom/revenuecat/purchases/kmp/models/Package;)V
85-
public final fun build ()Lcom/revenuecat/purchases/kmp/ui/revenuecatui/PaywallPurchaseLogicParams;
86-
public final fun oldProductId (Ljava/lang/String;)Lcom/revenuecat/purchases/kmp/ui/revenuecatui/PaywallPurchaseLogicParams$Builder;
87-
public final fun replacementMode (Lcom/revenuecat/purchases/kmp/models/ReplacementMode;)Lcom/revenuecat/purchases/kmp/ui/revenuecatui/PaywallPurchaseLogicParams$Builder;
88-
public final fun subscriptionOption (Lcom/revenuecat/purchases/kmp/models/SubscriptionOption;)Lcom/revenuecat/purchases/kmp/ui/revenuecatui/PaywallPurchaseLogicParams$Builder;
8977
}
9078

9179
public abstract class com/revenuecat/purchases/kmp/ui/revenuecatui/PurchaseLogicResult {

revenuecatui/api/revenuecatui.klib.api

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -76,23 +76,8 @@ final class com.revenuecat.purchases.kmp.ui.revenuecatui/PaywallOptions { // com
7676
}
7777

7878
final class com.revenuecat.purchases.kmp.ui.revenuecatui/PaywallPurchaseLogicParams { // com.revenuecat.purchases.kmp.ui.revenuecatui/PaywallPurchaseLogicParams|null[0]
79-
final val oldProductId // com.revenuecat.purchases.kmp.ui.revenuecatui/PaywallPurchaseLogicParams.oldProductId|{}oldProductId[0]
80-
final fun <get-oldProductId>(): kotlin/String? // com.revenuecat.purchases.kmp.ui.revenuecatui/PaywallPurchaseLogicParams.oldProductId.<get-oldProductId>|<get-oldProductId>(){}[0]
8179
final val rcPackage // com.revenuecat.purchases.kmp.ui.revenuecatui/PaywallPurchaseLogicParams.rcPackage|{}rcPackage[0]
8280
final fun <get-rcPackage>(): com.revenuecat.purchases.kmp.models/Package // com.revenuecat.purchases.kmp.ui.revenuecatui/PaywallPurchaseLogicParams.rcPackage.<get-rcPackage>|<get-rcPackage>(){}[0]
83-
final val replacementMode // com.revenuecat.purchases.kmp.ui.revenuecatui/PaywallPurchaseLogicParams.replacementMode|{}replacementMode[0]
84-
final fun <get-replacementMode>(): com.revenuecat.purchases.kmp.models/ReplacementMode? // com.revenuecat.purchases.kmp.ui.revenuecatui/PaywallPurchaseLogicParams.replacementMode.<get-replacementMode>|<get-replacementMode>(){}[0]
85-
final val subscriptionOption // com.revenuecat.purchases.kmp.ui.revenuecatui/PaywallPurchaseLogicParams.subscriptionOption|{}subscriptionOption[0]
86-
final fun <get-subscriptionOption>(): com.revenuecat.purchases.kmp.models/SubscriptionOption? // com.revenuecat.purchases.kmp.ui.revenuecatui/PaywallPurchaseLogicParams.subscriptionOption.<get-subscriptionOption>|<get-subscriptionOption>(){}[0]
87-
88-
final class Builder { // com.revenuecat.purchases.kmp.ui.revenuecatui/PaywallPurchaseLogicParams.Builder|null[0]
89-
constructor <init>(com.revenuecat.purchases.kmp.models/Package) // com.revenuecat.purchases.kmp.ui.revenuecatui/PaywallPurchaseLogicParams.Builder.<init>|<init>(com.revenuecat.purchases.kmp.models.Package){}[0]
90-
91-
final fun build(): com.revenuecat.purchases.kmp.ui.revenuecatui/PaywallPurchaseLogicParams // com.revenuecat.purchases.kmp.ui.revenuecatui/PaywallPurchaseLogicParams.Builder.build|build(){}[0]
92-
final fun oldProductId(kotlin/String): com.revenuecat.purchases.kmp.ui.revenuecatui/PaywallPurchaseLogicParams.Builder // com.revenuecat.purchases.kmp.ui.revenuecatui/PaywallPurchaseLogicParams.Builder.oldProductId|oldProductId(kotlin.String){}[0]
93-
final fun replacementMode(com.revenuecat.purchases.kmp.models/ReplacementMode?): com.revenuecat.purchases.kmp.ui.revenuecatui/PaywallPurchaseLogicParams.Builder // com.revenuecat.purchases.kmp.ui.revenuecatui/PaywallPurchaseLogicParams.Builder.replacementMode|replacementMode(com.revenuecat.purchases.kmp.models.ReplacementMode?){}[0]
94-
final fun subscriptionOption(com.revenuecat.purchases.kmp.models/SubscriptionOption?): com.revenuecat.purchases.kmp.ui.revenuecatui/PaywallPurchaseLogicParams.Builder // com.revenuecat.purchases.kmp.ui.revenuecatui/PaywallPurchaseLogicParams.Builder.subscriptionOption|subscriptionOption(com.revenuecat.purchases.kmp.models.SubscriptionOption?){}[0]
95-
}
9681
}
9782

9883
final val com.revenuecat.purchases.kmp.ui.revenuecatui.modifier/com_revenuecat_purchases_kmp_ui_revenuecatui_modifier_LayoutViewControllerState$stableprop // com.revenuecat.purchases.kmp.ui.revenuecatui.modifier/com_revenuecat_purchases_kmp_ui_revenuecatui_modifier_LayoutViewControllerState$stableprop|#static{}com_revenuecat_purchases_kmp_ui_revenuecatui_modifier_LayoutViewControllerState$stableprop[0]
@@ -102,7 +87,6 @@ final val com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_
10287
final val com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PaywallOptions$stableprop // com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PaywallOptions$stableprop|#static{}com_revenuecat_purchases_kmp_ui_revenuecatui_PaywallOptions$stableprop[0]
10388
final val com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PaywallOptions_Builder$stableprop // com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PaywallOptions_Builder$stableprop|#static{}com_revenuecat_purchases_kmp_ui_revenuecatui_PaywallOptions_Builder$stableprop[0]
10489
final val com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PaywallPurchaseLogicParams$stableprop // com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PaywallPurchaseLogicParams$stableprop|#static{}com_revenuecat_purchases_kmp_ui_revenuecatui_PaywallPurchaseLogicParams$stableprop[0]
105-
final val com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PaywallPurchaseLogicParams_Builder$stableprop // com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PaywallPurchaseLogicParams_Builder$stableprop|#static{}com_revenuecat_purchases_kmp_ui_revenuecatui_PaywallPurchaseLogicParams_Builder$stableprop[0]
10690
final val com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PurchaseLogicResult$stableprop // com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PurchaseLogicResult$stableprop|#static{}com_revenuecat_purchases_kmp_ui_revenuecatui_PurchaseLogicResult$stableprop[0]
10791
final val com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PurchaseLogicResult_Cancellation$stableprop // com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PurchaseLogicResult_Cancellation$stableprop|#static{}com_revenuecat_purchases_kmp_ui_revenuecatui_PurchaseLogicResult_Cancellation$stableprop[0]
10892
final val com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PurchaseLogicResult_Error$stableprop // com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PurchaseLogicResult_Error$stableprop|#static{}com_revenuecat_purchases_kmp_ui_revenuecatui_PurchaseLogicResult_Error$stableprop[0]
@@ -120,7 +104,6 @@ final fun com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_
120104
final fun com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PaywallOptions$stableprop_getter(): kotlin/Int // com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PaywallOptions$stableprop_getter|com_revenuecat_purchases_kmp_ui_revenuecatui_PaywallOptions$stableprop_getter(){}[0]
121105
final fun com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PaywallOptions_Builder$stableprop_getter(): kotlin/Int // com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PaywallOptions_Builder$stableprop_getter|com_revenuecat_purchases_kmp_ui_revenuecatui_PaywallOptions_Builder$stableprop_getter(){}[0]
122106
final fun com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PaywallPurchaseLogicParams$stableprop_getter(): kotlin/Int // com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PaywallPurchaseLogicParams$stableprop_getter|com_revenuecat_purchases_kmp_ui_revenuecatui_PaywallPurchaseLogicParams$stableprop_getter(){}[0]
123-
final fun com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PaywallPurchaseLogicParams_Builder$stableprop_getter(): kotlin/Int // com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PaywallPurchaseLogicParams_Builder$stableprop_getter|com_revenuecat_purchases_kmp_ui_revenuecatui_PaywallPurchaseLogicParams_Builder$stableprop_getter(){}[0]
124107
final fun com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PurchaseLogicResult$stableprop_getter(): kotlin/Int // com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PurchaseLogicResult$stableprop_getter|com_revenuecat_purchases_kmp_ui_revenuecatui_PurchaseLogicResult$stableprop_getter(){}[0]
125108
final fun com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PurchaseLogicResult_Cancellation$stableprop_getter(): kotlin/Int // com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PurchaseLogicResult_Cancellation$stableprop_getter|com_revenuecat_purchases_kmp_ui_revenuecatui_PurchaseLogicResult_Cancellation$stableprop_getter(){}[0]
126109
final fun com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PurchaseLogicResult_Error$stableprop_getter(): kotlin/Int // com.revenuecat.purchases.kmp.ui.revenuecatui/com_revenuecat_purchases_kmp_ui_revenuecatui_PurchaseLogicResult_Error$stableprop_getter|com_revenuecat_purchases_kmp_ui_revenuecatui_PurchaseLogicResult_Error$stableprop_getter(){}[0]

revenuecatui/src/androidMain/kotlin/com/revenuecat/purchases/kmp/ui/revenuecatui/PaywallOptionsKtx.kt

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,8 @@ import com.revenuecat.purchases.kmp.mappings.toAndroidOffering
99
import com.revenuecat.purchases.kmp.mappings.toCustomerInfo
1010
import com.revenuecat.purchases.kmp.mappings.toPackage
1111
import com.revenuecat.purchases.kmp.mappings.toPurchasesError
12+
import com.revenuecat.purchases.kmp.models.PurchasesError as KmpPurchasesError
1213
import com.revenuecat.purchases.kmp.mappings.toStoreTransaction
13-
import com.revenuecat.purchases.kmp.mappings.toSubscriptionOption
14-
import com.revenuecat.purchases.kmp.models.GoogleReplacementMode
15-
import com.revenuecat.purchases.models.GoogleReplacementMode as AndroidGoogleReplacementMode
1614
import com.revenuecat.purchases.models.StoreTransaction
1715
import com.revenuecat.purchases.ui.revenuecatui.PaywallPurchaseLogic as AndroidPaywallPurchaseLogic
1816
import com.revenuecat.purchases.ui.revenuecatui.PaywallPurchaseLogicParams as AndroidPaywallPurchaseLogicParams
@@ -40,10 +38,6 @@ private class PurchaseLogicWrapper(
4038
): AndroidPurchaseLogicResult {
4139
val kmpParams = PaywallPurchaseLogicParams(
4240
rcPackage = params.rcPackage.toPackage(),
43-
oldProductId = params.oldProductId,
44-
replacementMode = (params.replacementMode as? AndroidGoogleReplacementMode)
45-
?.toGoogleReplacementMode(),
46-
subscriptionOption = params.subscriptionOption?.toSubscriptionOption(),
4741
)
4842
return when (val result = purchaseLogic.performPurchase(kmpParams)) {
4943
is PurchaseLogicResult.Success -> AndroidPurchaseLogicResult.Success
@@ -69,16 +63,7 @@ private class PurchaseLogicWrapper(
6963
}
7064
}
7165

72-
private fun AndroidGoogleReplacementMode.toGoogleReplacementMode(): GoogleReplacementMode =
73-
when (this) {
74-
AndroidGoogleReplacementMode.WITHOUT_PRORATION -> GoogleReplacementMode.WITHOUT_PRORATION
75-
AndroidGoogleReplacementMode.WITH_TIME_PRORATION -> GoogleReplacementMode.WITH_TIME_PRORATION
76-
AndroidGoogleReplacementMode.CHARGE_PRORATED_PRICE -> GoogleReplacementMode.CHARGE_PRORATED_PRICE
77-
AndroidGoogleReplacementMode.CHARGE_FULL_PRICE -> GoogleReplacementMode.CHARGE_FULL_PRICE
78-
AndroidGoogleReplacementMode.DEFERRED -> GoogleReplacementMode.DEFERRED
79-
}
80-
81-
private fun com.revenuecat.purchases.kmp.models.PurchasesError.toAndroidPurchasesError(): PurchasesError =
66+
private fun KmpPurchasesError.toAndroidPurchasesError(): PurchasesError =
8267
PurchasesError(
8368
PurchasesErrorCode.UnknownError,
8469
underlyingErrorMessage ?: code.description,

0 commit comments

Comments
 (0)