react-native-iap 14.3.7 → 14.3.9
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 +74 -14
- 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,12 +8,13 @@ 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
|
+
import dev.hyo.openiap.models.OpenIapRequestPurchaseProps
|
|
13
|
+
import dev.hyo.openiap.models.OpenIapSerialization
|
|
12
14
|
import dev.hyo.openiap.models.OpenIapProduct
|
|
13
15
|
import dev.hyo.openiap.models.OpenIapPurchase
|
|
14
16
|
import dev.hyo.openiap.models.ProductRequest
|
|
15
|
-
import dev.hyo.openiap.models.
|
|
16
|
-
import dev.hyo.openiap.models.OpenIapSerialization
|
|
17
|
+
import dev.hyo.openiap.models.RequestSubscriptionAndroidProps.SubscriptionOffer as OpenIapSubscriptionOffer
|
|
17
18
|
import kotlinx.coroutines.Dispatchers
|
|
18
19
|
import kotlinx.coroutines.withContext
|
|
19
20
|
import kotlinx.coroutines.CompletableDeferred
|
|
@@ -140,8 +141,37 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
140
141
|
}
|
|
141
142
|
|
|
142
143
|
initConnection().await()
|
|
143
|
-
|
|
144
|
-
val
|
|
144
|
+
|
|
145
|
+
val normalizedType = type.lowercase()
|
|
146
|
+
val skusList = skus.toList()
|
|
147
|
+
|
|
148
|
+
val products: List<OpenIapProduct> = when (normalizedType) {
|
|
149
|
+
"all" -> {
|
|
150
|
+
val collected = mutableMapOf<String, OpenIapProduct>()
|
|
151
|
+
listOf("in-app", "subs").forEach { kind ->
|
|
152
|
+
val requestType = ProductRequest.ProductRequestType.fromString(kind)
|
|
153
|
+
val fetched = openIap.fetchProducts(ProductRequest(skusList, requestType))
|
|
154
|
+
fetched.forEach { collected[it.id] = it }
|
|
155
|
+
}
|
|
156
|
+
collected.values.toList()
|
|
157
|
+
}
|
|
158
|
+
"inapp", "in-app" -> {
|
|
159
|
+
if (normalizedType == "inapp") {
|
|
160
|
+
Log.w(TAG, "fetchProducts received legacy type 'inapp'; forwarding as 'in-app'")
|
|
161
|
+
}
|
|
162
|
+
val requestType = ProductRequest.ProductRequestType.fromString("in-app")
|
|
163
|
+
openIap.fetchProducts(ProductRequest(skusList, requestType))
|
|
164
|
+
}
|
|
165
|
+
"subs" -> {
|
|
166
|
+
val requestType = ProductRequest.ProductRequestType.fromString("subs")
|
|
167
|
+
openIap.fetchProducts(ProductRequest(skusList, requestType))
|
|
168
|
+
}
|
|
169
|
+
else -> {
|
|
170
|
+
Log.w(TAG, "fetchProducts received unknown type '$type'; defaulting to ProductRequest.fromString")
|
|
171
|
+
val requestType = ProductRequest.ProductRequestType.fromString(type)
|
|
172
|
+
openIap.fetchProducts(ProductRequest(skusList, requestType))
|
|
173
|
+
}
|
|
174
|
+
}
|
|
145
175
|
|
|
146
176
|
// populate type cache
|
|
147
177
|
products.forEach { p -> productTypeBySku[p.id] = p.type.value }
|
|
@@ -152,9 +182,9 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
152
182
|
|
|
153
183
|
// Purchase methods
|
|
154
184
|
// Purchase methods (Unified)
|
|
155
|
-
override fun requestPurchase(request: NitroPurchaseRequest): Promise<RequestPurchaseResult
|
|
185
|
+
override fun requestPurchase(request: NitroPurchaseRequest): Promise<RequestPurchaseResult?> {
|
|
156
186
|
return Promise.async {
|
|
157
|
-
val defaultResult = RequestPurchaseResult(
|
|
187
|
+
val defaultResult = RequestPurchaseResult.create(emptyArray())
|
|
158
188
|
|
|
159
189
|
val androidRequest = request.android ?: run {
|
|
160
190
|
// Programming error: no Android params provided
|
|
@@ -179,12 +209,21 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
179
209
|
val typeStr = androidRequest.skus.firstOrNull()?.let { productTypeBySku[it] } ?: "inapp"
|
|
180
210
|
val typeEnum = ProductRequest.ProductRequestType.fromString(typeStr)
|
|
181
211
|
|
|
212
|
+
val subscriptionOffers = androidRequest.subscriptionOffers
|
|
213
|
+
?.map { offer ->
|
|
214
|
+
OpenIapSubscriptionOffer(
|
|
215
|
+
sku = offer.sku,
|
|
216
|
+
offerToken = offer.offerToken
|
|
217
|
+
)
|
|
218
|
+
}
|
|
219
|
+
|
|
182
220
|
val result = openIap.requestPurchase(
|
|
183
221
|
OpenIapRequestPurchaseProps(
|
|
184
222
|
skus = androidRequest.skus.toList(),
|
|
185
223
|
obfuscatedAccountIdAndroid = androidRequest.obfuscatedAccountIdAndroid,
|
|
186
224
|
obfuscatedProfileIdAndroid = androidRequest.obfuscatedProfileIdAndroid,
|
|
187
|
-
isOfferPersonalized = androidRequest.isOfferPersonalized
|
|
225
|
+
isOfferPersonalized = androidRequest.isOfferPersonalized,
|
|
226
|
+
subscriptionOffers = subscriptionOffers ?: emptyList()
|
|
188
227
|
),
|
|
189
228
|
typeEnum
|
|
190
229
|
)
|
|
@@ -214,8 +253,18 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
214
253
|
val androidOptions = options?.android
|
|
215
254
|
initConnection().await()
|
|
216
255
|
|
|
217
|
-
val
|
|
218
|
-
|
|
256
|
+
val typeName = androidOptions?.type?.name?.lowercase()
|
|
257
|
+
val normalizedType = when (typeName) {
|
|
258
|
+
"inapp" -> {
|
|
259
|
+
Log.w(TAG, "getAvailablePurchases received legacy type 'inapp'; forwarding as 'in-app'")
|
|
260
|
+
"in-app"
|
|
261
|
+
}
|
|
262
|
+
"in-app", "subs" -> typeName
|
|
263
|
+
else -> null
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
val result: List<OpenIapPurchase> = if (normalizedType != null) {
|
|
267
|
+
val typeEnum = ProductRequest.ProductRequestType.fromString(normalizedType)
|
|
219
268
|
openIap.getAvailableItems(typeEnum)
|
|
220
269
|
} else {
|
|
221
270
|
openIap.getAvailablePurchases()
|
|
@@ -421,7 +470,7 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
421
470
|
displayPrice = product.displayPrice,
|
|
422
471
|
currency = product.currency,
|
|
423
472
|
price = product.price,
|
|
424
|
-
platform =
|
|
473
|
+
platform = IapPlatform.ANDROID,
|
|
425
474
|
// iOS fields (null on Android)
|
|
426
475
|
typeIOS = null,
|
|
427
476
|
isFamilyShareableIOS = null,
|
|
@@ -459,10 +508,10 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
459
508
|
productId = purchase.productId,
|
|
460
509
|
transactionDate = purchase.transactionDate.toDouble(),
|
|
461
510
|
purchaseToken = purchase.purchaseToken,
|
|
462
|
-
platform =
|
|
511
|
+
platform = IapPlatform.ANDROID,
|
|
463
512
|
// Common fields
|
|
464
513
|
quantity = purchase.quantity.toDouble(),
|
|
465
|
-
purchaseState = purchase.purchaseState
|
|
514
|
+
purchaseState = mapPurchaseState(purchase.purchaseState),
|
|
466
515
|
isAutoRenewing = purchase.isAutoRenewing,
|
|
467
516
|
// iOS fields
|
|
468
517
|
quantityIOS = null,
|
|
@@ -481,6 +530,17 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
481
530
|
obfuscatedProfileIdAndroid = purchase.obfuscatedProfileIdAndroid
|
|
482
531
|
)
|
|
483
532
|
}
|
|
533
|
+
|
|
534
|
+
private fun mapPurchaseState(state: OpenIapPurchase.PurchaseState): PurchaseState {
|
|
535
|
+
return when (state.name.uppercase()) {
|
|
536
|
+
"PURCHASED" -> PurchaseState.PURCHASED
|
|
537
|
+
"PENDING" -> PurchaseState.PENDING
|
|
538
|
+
"DEFERRED" -> PurchaseState.DEFERRED
|
|
539
|
+
"RESTORED" -> PurchaseState.RESTORED
|
|
540
|
+
"FAILED", "FAILURE", "CANCELED", "CANCELLED" -> PurchaseState.FAILED
|
|
541
|
+
else -> PurchaseState.UNKNOWN
|
|
542
|
+
}
|
|
543
|
+
}
|
|
484
544
|
|
|
485
545
|
// Billing error messages handled by OpenIAP
|
|
486
546
|
|
|
@@ -516,7 +576,7 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
516
576
|
return Promise.async {
|
|
517
577
|
try {
|
|
518
578
|
initConnection().await()
|
|
519
|
-
|
|
579
|
+
OpenIapDeepLinkOptions(
|
|
520
580
|
skuAndroid = options.skuAndroid,
|
|
521
581
|
packageNameAndroid = options.packageNameAndroid
|
|
522
582
|
).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":[]}
|