expo-iap 3.4.1 → 3.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/src/main/java/expo/modules/iap/ExpoIapHelper.kt +28 -0
- package/android/src/main/java/expo/modules/iap/ExpoIapModule.kt +2 -0
- package/coverage/clover.xml +2 -2
- package/coverage/lcov-report/index.html +1 -1
- package/coverage/lcov-report/src/index.html +1 -1
- package/coverage/lcov-report/src/index.ts.html +1 -1
- package/coverage/lcov-report/src/modules/android.ts.html +1 -1
- package/coverage/lcov-report/src/modules/index.html +1 -1
- package/coverage/lcov-report/src/modules/ios.ts.html +1 -1
- package/coverage/lcov-report/src/utils/debug.ts.html +1 -1
- package/coverage/lcov-report/src/utils/errorMapping.ts.html +1 -1
- package/coverage/lcov-report/src/utils/index.html +1 -1
- package/openiap-versions.json +1 -1
- package/package.json +1 -1
|
@@ -4,6 +4,8 @@ import android.util.Log
|
|
|
4
4
|
import dev.hyo.openiap.AndroidSubscriptionOfferInput
|
|
5
5
|
import dev.hyo.openiap.OpenIapModule
|
|
6
6
|
import dev.hyo.openiap.ProductQueryType
|
|
7
|
+
import dev.hyo.openiap.SubscriptionProductReplacementParamsAndroid
|
|
8
|
+
import dev.hyo.openiap.SubscriptionReplacementModeAndroid
|
|
7
9
|
import expo.modules.kotlin.Promise
|
|
8
10
|
import expo.modules.kotlin.modules.Module
|
|
9
11
|
import kotlinx.coroutines.CoroutineScope
|
|
@@ -79,6 +81,19 @@ object ExpoIapHelper {
|
|
|
79
81
|
(params["purchaseTokenAndroid"] ?: params["purchaseToken"]) as? String
|
|
80
82
|
val replacementMode =
|
|
81
83
|
(params["replacementModeAndroid"] ?: params["replacementMode"]) as? Number
|
|
84
|
+
val subscriptionProductReplacementParams =
|
|
85
|
+
(params["subscriptionProductReplacementParams"] as? Map<*, *>)?.let { paramsMap ->
|
|
86
|
+
val oldProductId = paramsMap["oldProductId"] as? String
|
|
87
|
+
val replacementModeStr = paramsMap["replacementMode"] as? String
|
|
88
|
+
if (oldProductId.isNullOrEmpty() || replacementModeStr.isNullOrEmpty()) {
|
|
89
|
+
null
|
|
90
|
+
} else {
|
|
91
|
+
SubscriptionProductReplacementParamsAndroid(
|
|
92
|
+
oldProductId = oldProductId,
|
|
93
|
+
replacementMode = parseSubscriptionReplacementMode(replacementModeStr),
|
|
94
|
+
)
|
|
95
|
+
}
|
|
96
|
+
}
|
|
82
97
|
|
|
83
98
|
return RequestPurchaseParams(
|
|
84
99
|
type = type,
|
|
@@ -90,9 +105,21 @@ object ExpoIapHelper {
|
|
|
90
105
|
explicitSubscriptionOffers = explicitSubscriptionOffers,
|
|
91
106
|
purchaseToken = purchaseToken,
|
|
92
107
|
replacementMode = replacementMode,
|
|
108
|
+
subscriptionProductReplacementParams = subscriptionProductReplacementParams,
|
|
93
109
|
)
|
|
94
110
|
}
|
|
95
111
|
|
|
112
|
+
fun parseSubscriptionReplacementMode(mode: String): SubscriptionReplacementModeAndroid =
|
|
113
|
+
when (mode) {
|
|
114
|
+
"with-time-proration" -> SubscriptionReplacementModeAndroid.WithTimeProration
|
|
115
|
+
"charge-prorated-price" -> SubscriptionReplacementModeAndroid.ChargeProratedPrice
|
|
116
|
+
"charge-full-price" -> SubscriptionReplacementModeAndroid.ChargeFullPrice
|
|
117
|
+
"without-proration" -> SubscriptionReplacementModeAndroid.WithoutProration
|
|
118
|
+
"deferred" -> SubscriptionReplacementModeAndroid.Deferred
|
|
119
|
+
"keep-existing" -> SubscriptionReplacementModeAndroid.KeepExisting
|
|
120
|
+
else -> SubscriptionReplacementModeAndroid.UnknownReplacementMode
|
|
121
|
+
}
|
|
122
|
+
|
|
96
123
|
data class RequestPurchaseParams(
|
|
97
124
|
val type: String?,
|
|
98
125
|
val skus: List<String>,
|
|
@@ -103,6 +130,7 @@ object ExpoIapHelper {
|
|
|
103
130
|
val explicitSubscriptionOffers: List<AndroidSubscriptionOfferInput>,
|
|
104
131
|
val purchaseToken: String?,
|
|
105
132
|
val replacementMode: Number?,
|
|
133
|
+
val subscriptionProductReplacementParams: SubscriptionProductReplacementParamsAndroid?,
|
|
106
134
|
)
|
|
107
135
|
|
|
108
136
|
fun addPurchasePromise(promise: Promise) {
|
|
@@ -19,6 +19,7 @@ import dev.hyo.openiap.RequestPurchaseResultPurchase
|
|
|
19
19
|
import dev.hyo.openiap.RequestPurchaseResultPurchases
|
|
20
20
|
import dev.hyo.openiap.RequestSubscriptionAndroidProps
|
|
21
21
|
import dev.hyo.openiap.RequestSubscriptionPropsByPlatforms
|
|
22
|
+
import dev.hyo.openiap.SubscriptionProductReplacementParamsAndroid
|
|
22
23
|
import dev.hyo.openiap.VerifyPurchaseGoogleOptions
|
|
23
24
|
import dev.hyo.openiap.VerifyPurchaseProps
|
|
24
25
|
import dev.hyo.openiap.VerifyPurchaseWithProviderProps
|
|
@@ -274,6 +275,7 @@ class ExpoIapModule : Module() {
|
|
|
274
275
|
replacementModeAndroid = parsedParams.replacementMode?.toInt(),
|
|
275
276
|
skus = parsedParams.skus,
|
|
276
277
|
subscriptionOffers = subscriptionOffers,
|
|
278
|
+
subscriptionProductReplacementParams = parsedParams.subscriptionProductReplacementParams,
|
|
277
279
|
)
|
|
278
280
|
RequestPurchaseProps(
|
|
279
281
|
request =
|
package/coverage/clover.xml
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<coverage generated="
|
|
3
|
-
<project timestamp="
|
|
2
|
+
<coverage generated="1768611008702" clover="3.2.0">
|
|
3
|
+
<project timestamp="1768611008702" name="All files">
|
|
4
4
|
<metrics statements="492" coveredstatements="463" conditionals="270" coveredconditionals="236" methods="103" coveredmethods="82" elements="865" coveredelements="781" complexity="0" loc="492" ncloc="492" packages="3" files="5" classes="5"/>
|
|
5
5
|
<package name="src">
|
|
6
6
|
<metrics statements="222" coveredstatements="215" conditionals="116" coveredconditionals="106" methods="46" coveredmethods="36"/>
|
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
132
132
|
Code coverage generated by
|
|
133
133
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
134
|
-
at 2026-01-
|
|
134
|
+
at 2026-01-17T00:50:08.682Z
|
|
135
135
|
</div>
|
|
136
136
|
<script src="prettify.js"></script>
|
|
137
137
|
<script>
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
102
102
|
Code coverage generated by
|
|
103
103
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
104
|
-
at 2026-01-
|
|
104
|
+
at 2026-01-17T00:50:08.682Z
|
|
105
105
|
</div>
|
|
106
106
|
<script src="../prettify.js"></script>
|
|
107
107
|
<script>
|
|
@@ -2788,7 +2788,7 @@ export {<span class="fstat-no" title="function not covered" >ExpoIapConsole}</sp
|
|
|
2788
2788
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
2789
2789
|
Code coverage generated by
|
|
2790
2790
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
2791
|
-
at 2026-01-
|
|
2791
|
+
at 2026-01-17T00:50:08.682Z
|
|
2792
2792
|
</div>
|
|
2793
2793
|
<script src="../prettify.js"></script>
|
|
2794
2794
|
<script>
|
|
@@ -1033,7 +1033,7 @@ export const createBillingProgramReportingDetailsAndroid: MutationField<
|
|
|
1033
1033
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1034
1034
|
Code coverage generated by
|
|
1035
1035
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1036
|
-
at 2026-01-
|
|
1036
|
+
at 2026-01-17T00:50:08.682Z
|
|
1037
1037
|
</div>
|
|
1038
1038
|
<script src="../../prettify.js"></script>
|
|
1039
1039
|
<script>
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
117
117
|
Code coverage generated by
|
|
118
118
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
119
|
-
at 2026-01-
|
|
119
|
+
at 2026-01-17T00:50:08.682Z
|
|
120
120
|
</div>
|
|
121
121
|
<script src="../../prettify.js"></script>
|
|
122
122
|
<script>
|
|
@@ -1276,7 +1276,7 @@ export const presentExternalPurchaseLinkIOS: MutationField<
|
|
|
1276
1276
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1277
1277
|
Code coverage generated by
|
|
1278
1278
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1279
|
-
at 2026-01-
|
|
1279
|
+
at 2026-01-17T00:50:08.682Z
|
|
1280
1280
|
</div>
|
|
1281
1281
|
<script src="../../prettify.js"></script>
|
|
1282
1282
|
<script>
|
|
@@ -268,7 +268,7 @@ export const ExpoIapConsole = createConsole();
|
|
|
268
268
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
269
269
|
Code coverage generated by
|
|
270
270
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
271
|
-
at 2026-01-
|
|
271
|
+
at 2026-01-17T00:50:08.682Z
|
|
272
272
|
</div>
|
|
273
273
|
<script src="../../prettify.js"></script>
|
|
274
274
|
<script>
|
|
@@ -1126,7 +1126,7 @@ export function getUserFriendlyErrorMessage(error: ErrorLike): string {
|
|
|
1126
1126
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1127
1127
|
Code coverage generated by
|
|
1128
1128
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1129
|
-
at 2026-01-
|
|
1129
|
+
at 2026-01-17T00:50:08.682Z
|
|
1130
1130
|
</div>
|
|
1131
1131
|
<script src="../../prettify.js"></script>
|
|
1132
1132
|
<script>
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
117
117
|
Code coverage generated by
|
|
118
118
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
119
|
-
at 2026-01-
|
|
119
|
+
at 2026-01-17T00:50:08.682Z
|
|
120
120
|
</div>
|
|
121
121
|
<script src="../../prettify.js"></script>
|
|
122
122
|
<script>
|
package/openiap-versions.json
CHANGED