react-native-iap 14.3.7 → 14.3.8
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/README.md +1 -1
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/margelo/nitro/iap/HybridRnIap.kt +61 -11
- package/ios/HybridRnIap.swift +47 -12
- package/lib/module/hooks/useIAP.js +31 -21
- package/lib/module/hooks/useIAP.js.map +1 -1
- package/lib/module/index.js +580 -695
- package/lib/module/index.js.map +1 -1
- package/lib/module/types.js +12 -0
- package/lib/module/types.js.map +1 -1
- package/lib/module/utils/purchase.js +22 -0
- package/lib/module/utils/purchase.js.map +1 -0
- package/lib/module/utils.js +43 -0
- package/lib/module/utils.js.map +1 -0
- package/lib/typescript/plugin/src/withIAP.d.ts +1 -0
- package/lib/typescript/plugin/src/withIAP.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useIAP.d.ts +4 -5
- package/lib/typescript/src/hooks/useIAP.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +57 -176
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/specs/RnIap.nitro.d.ts +113 -154
- package/lib/typescript/src/specs/RnIap.nitro.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +99 -76
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/lib/typescript/src/utils/purchase.d.ts +4 -0
- package/lib/typescript/src/utils/purchase.d.ts.map +1 -0
- package/lib/typescript/src/utils.d.ts +8 -0
- package/lib/typescript/src/utils.d.ts.map +1 -0
- package/nitrogen/generated/android/NitroIap+autolinking.cmake +1 -1
- package/nitrogen/generated/android/c++/{JNitroSubscriptionOffer.hpp → JAndroidSubscriptionOfferInput.hpp} +15 -15
- package/nitrogen/generated/android/c++/JFunc_void_NitroProduct.hpp +2 -0
- package/nitrogen/generated/android/c++/JFunc_void_NitroPurchase.hpp +4 -0
- package/nitrogen/generated/android/c++/JHybridRnIapSpec.cpp +16 -16
- package/nitrogen/generated/android/c++/JHybridRnIapSpec.hpp +1 -1
- package/nitrogen/generated/android/c++/JNitroAvailablePurchasesAndroidOptions.hpp +6 -5
- package/nitrogen/generated/android/c++/JNitroAvailablePurchasesAndroidType.hpp +59 -0
- package/nitrogen/generated/android/c++/JNitroAvailablePurchasesOptions.hpp +2 -1
- package/nitrogen/generated/android/c++/JNitroProduct.hpp +22 -20
- package/nitrogen/generated/android/c++/JNitroPurchase.hpp +12 -8
- package/nitrogen/generated/android/c++/JNitroPurchaseRequest.hpp +2 -2
- package/nitrogen/generated/android/c++/JNitroReceiptValidationAndroidOptions.hpp +10 -10
- package/nitrogen/generated/android/c++/JNitroReceiptValidationResultAndroid.hpp +6 -6
- package/nitrogen/generated/android/c++/JNitroReceiptValidationResultIOS.hpp +4 -0
- package/nitrogen/generated/android/c++/JNitroRequestPurchaseAndroid.hpp +7 -7
- package/nitrogen/generated/android/c++/JRequestPurchaseResult.cpp +39 -0
- package/nitrogen/generated/android/c++/JRequestPurchaseResult.hpp +68 -53
- package/nitrogen/generated/android/c++/JVariant_NitroReceiptValidationResultIOS_NitroReceiptValidationResultAndroid.hpp +4 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/{NitroSubscriptionOffer.kt → AndroidSubscriptionOfferInput.kt} +5 -5
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/HybridRnIapSpec.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroAvailablePurchasesAndroidOptions.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroAvailablePurchasesAndroidType.kt +21 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroProduct.kt +11 -11
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroPurchase.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroReceiptValidationAndroidOptions.kt +4 -4
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroReceiptValidationResultAndroid.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroRequestPurchaseAndroid.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/RequestPurchaseResult.kt +31 -13
- package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Bridge.cpp +4 -4
- package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Bridge.hpp +99 -64
- package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Umbrella.hpp +6 -6
- package/nitrogen/generated/ios/c++/HybridRnIapSpecSwift.hpp +10 -10
- package/nitrogen/generated/ios/swift/{NitroSubscriptionOffer.swift → AndroidSubscriptionOfferInput.swift} +13 -13
- package/nitrogen/generated/ios/swift/Func_void_std__optional_std__variant_PurchaseAndroid__PurchaseIOS__std__vector_std__variant_PurchaseAndroid__PurchaseIOS____.swift +81 -0
- package/nitrogen/generated/ios/swift/HybridRnIapSpec.swift +1 -1
- package/nitrogen/generated/ios/swift/HybridRnIapSpec_cxx.swift +35 -7
- package/nitrogen/generated/ios/swift/NitroAvailablePurchasesAndroidOptions.swift +7 -14
- package/nitrogen/generated/ios/swift/NitroAvailablePurchasesAndroidType.swift +40 -0
- package/nitrogen/generated/ios/swift/NitroProduct.swift +72 -72
- package/nitrogen/generated/ios/swift/NitroPurchase.swift +8 -8
- package/nitrogen/generated/ios/swift/NitroReceiptValidationAndroidOptions.swift +21 -21
- package/nitrogen/generated/ios/swift/NitroReceiptValidationResultAndroid.swift +37 -11
- package/nitrogen/generated/ios/swift/NitroRequestPurchaseAndroid.swift +11 -11
- package/nitrogen/generated/ios/swift/RequestPurchaseResult.swift +8 -137
- package/nitrogen/generated/shared/c++/{NitroSubscriptionOffer.hpp → AndroidSubscriptionOfferInput.hpp} +15 -15
- package/nitrogen/generated/shared/c++/HybridRnIapSpec.hpp +9 -6
- package/nitrogen/generated/shared/c++/NitroAvailablePurchasesAndroidOptions.hpp +8 -7
- package/nitrogen/generated/shared/c++/NitroAvailablePurchasesAndroidType.hpp +76 -0
- package/nitrogen/generated/shared/c++/NitroProduct.hpp +24 -22
- package/nitrogen/generated/shared/c++/NitroPurchase.hpp +15 -10
- package/nitrogen/generated/shared/c++/NitroReceiptValidationAndroidOptions.hpp +10 -10
- package/nitrogen/generated/shared/c++/NitroReceiptValidationResultAndroid.hpp +9 -9
- package/nitrogen/generated/shared/c++/NitroRequestPurchaseAndroid.hpp +8 -8
- package/package.json +2 -2
- package/plugin/build/withIAP.d.ts +1 -0
- package/plugin/build/withIAP.js +8 -2
- package/plugin/src/withIAP.ts +13 -3
- package/src/hooks/useIAP.ts +63 -32
- package/src/index.ts +716 -790
- package/src/specs/RnIap.nitro.ts +131 -163
- package/src/types.ts +131 -85
- package/src/utils/purchase.ts +32 -0
- package/src/utils.ts +68 -0
- package/nitrogen/generated/android/c++/JVariant_PurchaseAndroid_PurchaseIOS.cpp +0 -26
- package/nitrogen/generated/android/c++/JVariant_PurchaseAndroid_PurchaseIOS.hpp +0 -80
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Variant_PurchaseAndroid_PurchaseIOS.kt +0 -42
- package/nitrogen/generated/ios/swift/Func_void_RequestPurchaseResult.swift +0 -47
- package/nitrogen/generated/ios/swift/Variant_PurchaseAndroid_PurchaseIOS.swift +0 -18
- package/nitrogen/generated/shared/c++/RequestPurchaseResult.hpp +0 -78
package/README.md
CHANGED
|
@@ -94,7 +94,7 @@ Add the OpenIAP Google library to your `android/app/build.gradle` dependencies:
|
|
|
94
94
|
|
|
95
95
|
```gradle
|
|
96
96
|
dependencies {
|
|
97
|
-
implementation "io.github.hyochan.openiap:openiap-google:1.1.
|
|
97
|
+
implementation "io.github.hyochan.openiap:openiap-google:1.1.12"
|
|
98
98
|
}
|
|
99
99
|
```
|
|
100
100
|
|
package/android/build.gradle
CHANGED
|
@@ -155,7 +155,7 @@ dependencies {
|
|
|
155
155
|
|
|
156
156
|
// Kotlin coroutines
|
|
157
157
|
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0'
|
|
158
|
-
implementation 'io.github.hyochan.openiap:openiap-google:1.1.
|
|
158
|
+
implementation 'io.github.hyochan.openiap:openiap-google:1.1.12'
|
|
159
159
|
}
|
|
160
160
|
|
|
161
161
|
configurations.all {
|
|
@@ -8,7 +8,7 @@ import dev.hyo.openiap.OpenIapError as OpenIAPError
|
|
|
8
8
|
import dev.hyo.openiap.OpenIapModule
|
|
9
9
|
import dev.hyo.openiap.listener.OpenIapPurchaseErrorListener
|
|
10
10
|
import dev.hyo.openiap.listener.OpenIapPurchaseUpdateListener
|
|
11
|
-
import dev.hyo.openiap.models.DeepLinkOptions
|
|
11
|
+
import dev.hyo.openiap.models.DeepLinkOptions as OpenIapDeepLinkOptions
|
|
12
12
|
import dev.hyo.openiap.models.OpenIapProduct
|
|
13
13
|
import dev.hyo.openiap.models.OpenIapPurchase
|
|
14
14
|
import dev.hyo.openiap.models.ProductRequest
|
|
@@ -140,8 +140,37 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
140
140
|
}
|
|
141
141
|
|
|
142
142
|
initConnection().await()
|
|
143
|
-
|
|
144
|
-
val
|
|
143
|
+
|
|
144
|
+
val normalizedType = type.lowercase()
|
|
145
|
+
val skusList = skus.toList()
|
|
146
|
+
|
|
147
|
+
val products: List<OpenIapProduct> = when (normalizedType) {
|
|
148
|
+
"all" -> {
|
|
149
|
+
val collected = mutableMapOf<String, OpenIapProduct>()
|
|
150
|
+
listOf("in-app", "subs").forEach { kind ->
|
|
151
|
+
val requestType = ProductRequest.ProductRequestType.fromString(kind)
|
|
152
|
+
val fetched = openIap.fetchProducts(ProductRequest(skusList, requestType))
|
|
153
|
+
fetched.forEach { collected[it.id] = it }
|
|
154
|
+
}
|
|
155
|
+
collected.values.toList()
|
|
156
|
+
}
|
|
157
|
+
"inapp", "in-app" -> {
|
|
158
|
+
if (normalizedType == "inapp") {
|
|
159
|
+
Log.w(TAG, "fetchProducts received legacy type 'inapp'; forwarding as 'in-app'")
|
|
160
|
+
}
|
|
161
|
+
val requestType = ProductRequest.ProductRequestType.fromString("in-app")
|
|
162
|
+
openIap.fetchProducts(ProductRequest(skusList, requestType))
|
|
163
|
+
}
|
|
164
|
+
"subs" -> {
|
|
165
|
+
val requestType = ProductRequest.ProductRequestType.fromString("subs")
|
|
166
|
+
openIap.fetchProducts(ProductRequest(skusList, requestType))
|
|
167
|
+
}
|
|
168
|
+
else -> {
|
|
169
|
+
Log.w(TAG, "fetchProducts received unknown type '$type'; defaulting to ProductRequest.fromString")
|
|
170
|
+
val requestType = ProductRequest.ProductRequestType.fromString(type)
|
|
171
|
+
openIap.fetchProducts(ProductRequest(skusList, requestType))
|
|
172
|
+
}
|
|
173
|
+
}
|
|
145
174
|
|
|
146
175
|
// populate type cache
|
|
147
176
|
products.forEach { p -> productTypeBySku[p.id] = p.type.value }
|
|
@@ -152,9 +181,9 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
152
181
|
|
|
153
182
|
// Purchase methods
|
|
154
183
|
// Purchase methods (Unified)
|
|
155
|
-
override fun requestPurchase(request: NitroPurchaseRequest): Promise<RequestPurchaseResult
|
|
184
|
+
override fun requestPurchase(request: NitroPurchaseRequest): Promise<RequestPurchaseResult?> {
|
|
156
185
|
return Promise.async {
|
|
157
|
-
val defaultResult = RequestPurchaseResult(
|
|
186
|
+
val defaultResult = RequestPurchaseResult.create(emptyArray())
|
|
158
187
|
|
|
159
188
|
val androidRequest = request.android ?: run {
|
|
160
189
|
// Programming error: no Android params provided
|
|
@@ -214,8 +243,18 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
214
243
|
val androidOptions = options?.android
|
|
215
244
|
initConnection().await()
|
|
216
245
|
|
|
217
|
-
val
|
|
218
|
-
|
|
246
|
+
val typeName = androidOptions?.type?.name?.lowercase()
|
|
247
|
+
val normalizedType = when (typeName) {
|
|
248
|
+
"inapp" -> {
|
|
249
|
+
Log.w(TAG, "getAvailablePurchases received legacy type 'inapp'; forwarding as 'in-app'")
|
|
250
|
+
"in-app"
|
|
251
|
+
}
|
|
252
|
+
"in-app", "subs" -> typeName
|
|
253
|
+
else -> null
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
val result: List<OpenIapPurchase> = if (normalizedType != null) {
|
|
257
|
+
val typeEnum = ProductRequest.ProductRequestType.fromString(normalizedType)
|
|
219
258
|
openIap.getAvailableItems(typeEnum)
|
|
220
259
|
} else {
|
|
221
260
|
openIap.getAvailablePurchases()
|
|
@@ -421,7 +460,7 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
421
460
|
displayPrice = product.displayPrice,
|
|
422
461
|
currency = product.currency,
|
|
423
462
|
price = product.price,
|
|
424
|
-
platform =
|
|
463
|
+
platform = IapPlatform.ANDROID,
|
|
425
464
|
// iOS fields (null on Android)
|
|
426
465
|
typeIOS = null,
|
|
427
466
|
isFamilyShareableIOS = null,
|
|
@@ -459,10 +498,10 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
459
498
|
productId = purchase.productId,
|
|
460
499
|
transactionDate = purchase.transactionDate.toDouble(),
|
|
461
500
|
purchaseToken = purchase.purchaseToken,
|
|
462
|
-
platform =
|
|
501
|
+
platform = IapPlatform.ANDROID,
|
|
463
502
|
// Common fields
|
|
464
503
|
quantity = purchase.quantity.toDouble(),
|
|
465
|
-
purchaseState = purchase.purchaseState
|
|
504
|
+
purchaseState = mapPurchaseState(purchase.purchaseState),
|
|
466
505
|
isAutoRenewing = purchase.isAutoRenewing,
|
|
467
506
|
// iOS fields
|
|
468
507
|
quantityIOS = null,
|
|
@@ -481,6 +520,17 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
481
520
|
obfuscatedProfileIdAndroid = purchase.obfuscatedProfileIdAndroid
|
|
482
521
|
)
|
|
483
522
|
}
|
|
523
|
+
|
|
524
|
+
private fun mapPurchaseState(state: OpenIapPurchase.PurchaseState): PurchaseState {
|
|
525
|
+
return when (state.name.uppercase()) {
|
|
526
|
+
"PURCHASED" -> PurchaseState.PURCHASED
|
|
527
|
+
"PENDING" -> PurchaseState.PENDING
|
|
528
|
+
"DEFERRED" -> PurchaseState.DEFERRED
|
|
529
|
+
"RESTORED" -> PurchaseState.RESTORED
|
|
530
|
+
"FAILED", "FAILURE", "CANCELED", "CANCELLED" -> PurchaseState.FAILED
|
|
531
|
+
else -> PurchaseState.UNKNOWN
|
|
532
|
+
}
|
|
533
|
+
}
|
|
484
534
|
|
|
485
535
|
// Billing error messages handled by OpenIAP
|
|
486
536
|
|
|
@@ -516,7 +566,7 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
516
566
|
return Promise.async {
|
|
517
567
|
try {
|
|
518
568
|
initConnection().await()
|
|
519
|
-
|
|
569
|
+
OpenIapDeepLinkOptions(
|
|
520
570
|
skuAndroid = options.skuAndroid,
|
|
521
571
|
packageNameAndroid = options.packageNameAndroid
|
|
522
572
|
).let { openIap.deepLinkToSubscriptions(it) }
|
package/ios/HybridRnIap.swift
CHANGED
|
@@ -89,7 +89,7 @@ class HybridRnIap: HybridRnIapSpec {
|
|
|
89
89
|
minimal.id = id
|
|
90
90
|
minimal.title = id
|
|
91
91
|
minimal.type = "inapp"
|
|
92
|
-
minimal.platform =
|
|
92
|
+
minimal.platform = .ios
|
|
93
93
|
for listener in self.promotedProductListeners { listener(minimal) }
|
|
94
94
|
}
|
|
95
95
|
}
|
|
@@ -147,7 +147,7 @@ class HybridRnIap: HybridRnIapSpec {
|
|
|
147
147
|
minimal.id = id
|
|
148
148
|
minimal.title = id
|
|
149
149
|
minimal.type = "inapp"
|
|
150
|
-
minimal.platform =
|
|
150
|
+
minimal.platform = .ios
|
|
151
151
|
for listener in self.promotedProductListeners { listener(minimal) }
|
|
152
152
|
}
|
|
153
153
|
}
|
|
@@ -187,9 +187,38 @@ class HybridRnIap: HybridRnIapSpec {
|
|
|
187
187
|
return Promise.async {
|
|
188
188
|
do {
|
|
189
189
|
try self.ensureConnection()
|
|
190
|
-
|
|
191
|
-
let
|
|
192
|
-
let products
|
|
190
|
+
|
|
191
|
+
let normalizedType = type.lowercased()
|
|
192
|
+
let products: [OpenIapProduct]
|
|
193
|
+
|
|
194
|
+
if normalizedType == "all" {
|
|
195
|
+
var deduped: [String: OpenIapProduct] = [:]
|
|
196
|
+
for kind in ["in-app", "subs"] {
|
|
197
|
+
let request = OpenIapProductRequest(skus: skus, type: kind)
|
|
198
|
+
let fetched = try await OpenIapModule.shared.fetchProducts(request)
|
|
199
|
+
for item in fetched { deduped[item.id] = item }
|
|
200
|
+
}
|
|
201
|
+
products = Array(deduped.values)
|
|
202
|
+
} else {
|
|
203
|
+
var resolvedType = type
|
|
204
|
+
switch normalizedType {
|
|
205
|
+
case "inapp":
|
|
206
|
+
#if DEBUG
|
|
207
|
+
print("[HybridRnIap] fetchProducts received legacy type 'inapp'; forwarding as 'in-app'")
|
|
208
|
+
#endif
|
|
209
|
+
fallthrough
|
|
210
|
+
case "in-app":
|
|
211
|
+
resolvedType = "in-app"
|
|
212
|
+
case "subs":
|
|
213
|
+
resolvedType = "subs"
|
|
214
|
+
default:
|
|
215
|
+
break
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
let request = OpenIapProductRequest(skus: skus, type: resolvedType)
|
|
219
|
+
products = try await OpenIapModule.shared.fetchProducts(request)
|
|
220
|
+
}
|
|
221
|
+
|
|
193
222
|
return products.map { self.convertOpenIapProductToNitroProduct($0) }
|
|
194
223
|
} catch {
|
|
195
224
|
// Propagate OpenIAP error
|
|
@@ -198,9 +227,9 @@ class HybridRnIap: HybridRnIapSpec {
|
|
|
198
227
|
}
|
|
199
228
|
}
|
|
200
229
|
|
|
201
|
-
func requestPurchase(request: NitroPurchaseRequest) throws -> Promise<RequestPurchaseResult
|
|
230
|
+
func requestPurchase(request: NitroPurchaseRequest) throws -> Promise<RequestPurchaseResult?> {
|
|
202
231
|
return Promise.async {
|
|
203
|
-
let defaultResult =
|
|
232
|
+
let defaultResult: RequestPurchaseResult? = .third([])
|
|
204
233
|
guard let iosRequest = request.ios else {
|
|
205
234
|
let error = self.createPurchaseErrorResult(
|
|
206
235
|
code: OpenIapError.UserError,
|
|
@@ -358,7 +387,7 @@ class HybridRnIap: HybridRnIapSpec {
|
|
|
358
387
|
n.title = p.localizedTitle
|
|
359
388
|
n.description = p.localizedDescription
|
|
360
389
|
n.type = "inapp"
|
|
361
|
-
n.platform =
|
|
390
|
+
n.platform = .ios
|
|
362
391
|
n.price = p.price
|
|
363
392
|
n.currency = p.priceLocale.currencyCode
|
|
364
393
|
return n
|
|
@@ -569,7 +598,7 @@ class HybridRnIap: HybridRnIapSpec {
|
|
|
569
598
|
n.title = title
|
|
570
599
|
n.description = desc
|
|
571
600
|
n.type = "inapp"
|
|
572
|
-
n.platform =
|
|
601
|
+
n.platform = .ios
|
|
573
602
|
n.price = price
|
|
574
603
|
n.currency = currency
|
|
575
604
|
listener(n)
|
|
@@ -689,7 +718,9 @@ class HybridRnIap: HybridRnIapSpec {
|
|
|
689
718
|
n.displayPrice = p.displayPrice
|
|
690
719
|
n.currency = p.currency
|
|
691
720
|
n.price = p.price
|
|
692
|
-
|
|
721
|
+
if let platform = IapPlatform(fromString: p.platform) {
|
|
722
|
+
n.platform = platform
|
|
723
|
+
}
|
|
693
724
|
// iOS specifics
|
|
694
725
|
n.typeIOS = p.typeIOS.rawValue
|
|
695
726
|
n.isFamilyShareableIOS = p.isFamilyShareableIOS
|
|
@@ -710,9 +741,13 @@ class HybridRnIap: HybridRnIapSpec {
|
|
|
710
741
|
n.productId = p.productId
|
|
711
742
|
n.transactionDate = p.transactionDate
|
|
712
743
|
n.purchaseToken = p.purchaseToken
|
|
713
|
-
|
|
744
|
+
if let platform = IapPlatform(fromString: p.platform) {
|
|
745
|
+
n.platform = platform
|
|
746
|
+
}
|
|
714
747
|
n.quantity = Double(p.quantity)
|
|
715
|
-
|
|
748
|
+
if let state = PurchaseState(fromString: p.purchaseState.rawValue) {
|
|
749
|
+
n.purchaseState = state
|
|
750
|
+
}
|
|
716
751
|
n.isAutoRenewing = p.isAutoRenewing
|
|
717
752
|
// iOS specifics
|
|
718
753
|
if let q = p.quantityIOS { n.quantityIOS = Double(q) }
|
|
@@ -57,7 +57,8 @@ export function useIAP(options) {
|
|
|
57
57
|
skus,
|
|
58
58
|
type: 'in-app'
|
|
59
59
|
});
|
|
60
|
-
|
|
60
|
+
const newProducts = (result ?? []).filter(item => item.type === 'in-app');
|
|
61
|
+
setProducts(prevProducts => mergeWithDuplicateCheck(prevProducts, newProducts, product => product.id));
|
|
61
62
|
} catch (error) {
|
|
62
63
|
console.error('Error fetching products:', error);
|
|
63
64
|
}
|
|
@@ -68,7 +69,8 @@ export function useIAP(options) {
|
|
|
68
69
|
skus,
|
|
69
70
|
type: 'subs'
|
|
70
71
|
});
|
|
71
|
-
|
|
72
|
+
const newSubscriptions = (result ?? []).filter(item => item.type === 'subs');
|
|
73
|
+
setSubscriptions(prevSubscriptions => mergeWithDuplicateCheck(prevSubscriptions, newSubscriptions, subscription => subscription.id));
|
|
72
74
|
} catch (error) {
|
|
73
75
|
console.error('Error fetching subscriptions:', error);
|
|
74
76
|
}
|
|
@@ -79,12 +81,26 @@ export function useIAP(options) {
|
|
|
79
81
|
return;
|
|
80
82
|
}
|
|
81
83
|
try {
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
84
|
+
const requestType = params.type ?? 'in-app';
|
|
85
|
+
const result = await fetchProducts({
|
|
86
|
+
skus: params.skus,
|
|
87
|
+
type: requestType
|
|
88
|
+
});
|
|
89
|
+
const items = result ?? [];
|
|
90
|
+
if (requestType === 'subs') {
|
|
91
|
+
const newSubscriptions = items.filter(item => item.type === 'subs');
|
|
92
|
+
setSubscriptions(prevSubscriptions => mergeWithDuplicateCheck(prevSubscriptions, newSubscriptions, subscription => subscription.id));
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
if (requestType === 'all') {
|
|
96
|
+
const newProducts = items.filter(item => item.type === 'in-app');
|
|
97
|
+
const newSubscriptions = items.filter(item => item.type === 'subs');
|
|
98
|
+
setProducts(prevProducts => mergeWithDuplicateCheck(prevProducts, newProducts, product => product.id));
|
|
99
|
+
setSubscriptions(prevSubscriptions => mergeWithDuplicateCheck(prevSubscriptions, newSubscriptions, subscription => subscription.id));
|
|
100
|
+
return;
|
|
87
101
|
}
|
|
102
|
+
const newProducts = items.filter(item => item.type === 'in-app');
|
|
103
|
+
setProducts(prevProducts => mergeWithDuplicateCheck(prevProducts, newProducts, product => product.id));
|
|
88
104
|
} catch (error) {
|
|
89
105
|
console.error('Error fetching products:', error);
|
|
90
106
|
}
|
|
@@ -120,15 +136,9 @@ export function useIAP(options) {
|
|
|
120
136
|
return false;
|
|
121
137
|
}
|
|
122
138
|
}, []);
|
|
123
|
-
const finishTransaction = useCallback(async
|
|
124
|
-
purchase,
|
|
125
|
-
isConsumable
|
|
126
|
-
}) => {
|
|
139
|
+
const finishTransaction = useCallback(async args => {
|
|
127
140
|
try {
|
|
128
|
-
|
|
129
|
-
purchase,
|
|
130
|
-
isConsumable
|
|
131
|
-
});
|
|
141
|
+
await finishTransactionInternal(args);
|
|
132
142
|
} catch (err) {
|
|
133
143
|
throw err;
|
|
134
144
|
}
|
|
@@ -138,7 +148,10 @@ export function useIAP(options) {
|
|
|
138
148
|
// No local restorePurchases; use the top-level helper via returned API
|
|
139
149
|
|
|
140
150
|
const validateReceipt = useCallback(async (sku, androidOptions) => {
|
|
141
|
-
return validateReceiptInternal(
|
|
151
|
+
return validateReceiptInternal({
|
|
152
|
+
sku,
|
|
153
|
+
androidOptions
|
|
154
|
+
});
|
|
142
155
|
}, []);
|
|
143
156
|
const initIapWithSubscriptions = useCallback(async () => {
|
|
144
157
|
// Register listeners BEFORE initConnection to avoid race condition
|
|
@@ -215,11 +228,8 @@ export function useIAP(options) {
|
|
|
215
228
|
validateReceipt,
|
|
216
229
|
restorePurchases: async () => {
|
|
217
230
|
try {
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
onlyIncludeActiveItemsIOS: true
|
|
221
|
-
});
|
|
222
|
-
setAvailablePurchases(purchases);
|
|
231
|
+
await restorePurchasesTopLevel();
|
|
232
|
+
await getAvailablePurchasesInternal();
|
|
223
233
|
} catch (e) {
|
|
224
234
|
console.warn('Failed to restore purchases:', e);
|
|
225
235
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useState","useRef","Platform","initConnection","purchaseErrorListener","purchaseUpdatedListener","promotedProductListenerIOS","getAvailablePurchases","finishTransaction","finishTransactionInternal","requestPurchase","requestPurchaseInternal","fetchProducts","validateReceipt","validateReceiptInternal","getActiveSubscriptions","hasActiveSubscriptions","restorePurchases","restorePurchasesTopLevel","getPromotedProductIOS","requestPurchaseOnPromotedProductIOS","ErrorCode","normalizeErrorCodeFromNative","useIAP","options","connected","setConnected","products","setProducts","promotedProductsIOS","subscriptions","setSubscriptions","availablePurchases","setAvailablePurchases","promotedProductIOS","setPromotedProductIOS","promotedProductIdIOS","activeSubscriptions","setActiveSubscriptions","optionsRef","connectedRef","mergeWithDuplicateCheck","existingItems","newItems","getKey","merged","forEach","newItem","isDuplicate","some","existingItem","push","current","subscriptionsRef","subscriptionsRefState","getProductsInternal","skus","result","type","prevProducts","product","id","error","console","getSubscriptionsInternal","prevSubscriptions","subscription","fetchProductsInternal","params","warn","getAvailablePurchasesInternal","_skus","alsoPublishToEventListenerIOS","onlyIncludeActiveItemsIOS","getActiveSubscriptionsInternal","subscriptionIds","hasActiveSubscriptionsInternal","
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useState","useRef","Platform","initConnection","purchaseErrorListener","purchaseUpdatedListener","promotedProductListenerIOS","getAvailablePurchases","finishTransaction","finishTransactionInternal","requestPurchase","requestPurchaseInternal","fetchProducts","validateReceipt","validateReceiptInternal","getActiveSubscriptions","hasActiveSubscriptions","restorePurchases","restorePurchasesTopLevel","getPromotedProductIOS","requestPurchaseOnPromotedProductIOS","ErrorCode","normalizeErrorCodeFromNative","useIAP","options","connected","setConnected","products","setProducts","promotedProductsIOS","subscriptions","setSubscriptions","availablePurchases","setAvailablePurchases","promotedProductIOS","setPromotedProductIOS","promotedProductIdIOS","activeSubscriptions","setActiveSubscriptions","optionsRef","connectedRef","mergeWithDuplicateCheck","existingItems","newItems","getKey","merged","forEach","newItem","isDuplicate","some","existingItem","push","current","subscriptionsRef","subscriptionsRefState","getProductsInternal","skus","result","type","newProducts","filter","item","prevProducts","product","id","error","console","getSubscriptionsInternal","newSubscriptions","prevSubscriptions","subscription","fetchProductsInternal","params","warn","requestType","items","getAvailablePurchasesInternal","_skus","alsoPublishToEventListenerIOS","onlyIncludeActiveItemsIOS","getActiveSubscriptionsInternal","subscriptionIds","hasActiveSubscriptionsInternal","args","err","requestObj","sku","androidOptions","initIapWithSubscriptions","purchaseUpdate","purchase","e","onPurchaseSuccess","purchaseError","mappedError","code","message","productId","undefined","InitConnection","onPurchaseError","OS","onPromotedProductIOS","remove","currentSubscriptions","getProducts","getSubscriptions"],"sourceRoot":"../../../src","sources":["hooks/useIAP.ts"],"mappings":"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","ignoreList":[]}
|