react-native-iap 14.3.6 → 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.
Files changed (98) hide show
  1. package/README.md +1 -1
  2. package/android/build.gradle +1 -3
  3. package/android/src/main/java/com/margelo/nitro/iap/HybridRnIap.kt +61 -11
  4. package/ios/HybridRnIap.swift +47 -12
  5. package/lib/module/hooks/useIAP.js +31 -21
  6. package/lib/module/hooks/useIAP.js.map +1 -1
  7. package/lib/module/index.js +629 -700
  8. package/lib/module/index.js.map +1 -1
  9. package/lib/module/types.js +12 -0
  10. package/lib/module/types.js.map +1 -1
  11. package/lib/module/utils/purchase.js +22 -0
  12. package/lib/module/utils/purchase.js.map +1 -0
  13. package/lib/module/utils.js +43 -0
  14. package/lib/module/utils.js.map +1 -0
  15. package/lib/typescript/plugin/src/withIAP.d.ts +1 -0
  16. package/lib/typescript/plugin/src/withIAP.d.ts.map +1 -1
  17. package/lib/typescript/src/hooks/useIAP.d.ts +4 -5
  18. package/lib/typescript/src/hooks/useIAP.d.ts.map +1 -1
  19. package/lib/typescript/src/index.d.ts +57 -176
  20. package/lib/typescript/src/index.d.ts.map +1 -1
  21. package/lib/typescript/src/specs/RnIap.nitro.d.ts +113 -154
  22. package/lib/typescript/src/specs/RnIap.nitro.d.ts.map +1 -1
  23. package/lib/typescript/src/types.d.ts +99 -76
  24. package/lib/typescript/src/types.d.ts.map +1 -1
  25. package/lib/typescript/src/utils/purchase.d.ts +4 -0
  26. package/lib/typescript/src/utils/purchase.d.ts.map +1 -0
  27. package/lib/typescript/src/utils.d.ts +8 -0
  28. package/lib/typescript/src/utils.d.ts.map +1 -0
  29. package/nitrogen/generated/android/NitroIap+autolinking.cmake +1 -1
  30. package/nitrogen/generated/android/c++/{JNitroSubscriptionOffer.hpp → JAndroidSubscriptionOfferInput.hpp} +15 -15
  31. package/nitrogen/generated/android/c++/JFunc_void_NitroProduct.hpp +2 -0
  32. package/nitrogen/generated/android/c++/JFunc_void_NitroPurchase.hpp +4 -0
  33. package/nitrogen/generated/android/c++/JHybridRnIapSpec.cpp +16 -16
  34. package/nitrogen/generated/android/c++/JHybridRnIapSpec.hpp +1 -1
  35. package/nitrogen/generated/android/c++/JNitroAvailablePurchasesAndroidOptions.hpp +6 -5
  36. package/nitrogen/generated/android/c++/JNitroAvailablePurchasesAndroidType.hpp +59 -0
  37. package/nitrogen/generated/android/c++/JNitroAvailablePurchasesOptions.hpp +2 -1
  38. package/nitrogen/generated/android/c++/JNitroProduct.hpp +22 -20
  39. package/nitrogen/generated/android/c++/JNitroPurchase.hpp +12 -8
  40. package/nitrogen/generated/android/c++/JNitroPurchaseRequest.hpp +2 -2
  41. package/nitrogen/generated/android/c++/JNitroReceiptValidationAndroidOptions.hpp +10 -10
  42. package/nitrogen/generated/android/c++/JNitroReceiptValidationResultAndroid.hpp +6 -6
  43. package/nitrogen/generated/android/c++/JNitroReceiptValidationResultIOS.hpp +4 -0
  44. package/nitrogen/generated/android/c++/JNitroRequestPurchaseAndroid.hpp +7 -7
  45. package/nitrogen/generated/android/c++/JRequestPurchaseResult.cpp +39 -0
  46. package/nitrogen/generated/android/c++/JRequestPurchaseResult.hpp +68 -53
  47. package/nitrogen/generated/android/c++/JVariant_NitroReceiptValidationResultIOS_NitroReceiptValidationResultAndroid.hpp +4 -0
  48. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/{NitroSubscriptionOffer.kt → AndroidSubscriptionOfferInput.kt} +5 -5
  49. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/HybridRnIapSpec.kt +1 -1
  50. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroAvailablePurchasesAndroidOptions.kt +1 -1
  51. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroAvailablePurchasesAndroidType.kt +21 -0
  52. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroProduct.kt +11 -11
  53. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroPurchase.kt +2 -2
  54. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroReceiptValidationAndroidOptions.kt +4 -4
  55. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroReceiptValidationResultAndroid.kt +2 -2
  56. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroRequestPurchaseAndroid.kt +1 -1
  57. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/RequestPurchaseResult.kt +31 -13
  58. package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Bridge.cpp +4 -4
  59. package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Bridge.hpp +99 -64
  60. package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Umbrella.hpp +6 -6
  61. package/nitrogen/generated/ios/c++/HybridRnIapSpecSwift.hpp +10 -10
  62. package/nitrogen/generated/ios/swift/{NitroSubscriptionOffer.swift → AndroidSubscriptionOfferInput.swift} +13 -13
  63. package/nitrogen/generated/ios/swift/Func_void_std__optional_std__variant_PurchaseAndroid__PurchaseIOS__std__vector_std__variant_PurchaseAndroid__PurchaseIOS____.swift +81 -0
  64. package/nitrogen/generated/ios/swift/HybridRnIapSpec.swift +1 -1
  65. package/nitrogen/generated/ios/swift/HybridRnIapSpec_cxx.swift +35 -7
  66. package/nitrogen/generated/ios/swift/NitroAvailablePurchasesAndroidOptions.swift +7 -14
  67. package/nitrogen/generated/ios/swift/NitroAvailablePurchasesAndroidType.swift +40 -0
  68. package/nitrogen/generated/ios/swift/NitroProduct.swift +72 -72
  69. package/nitrogen/generated/ios/swift/NitroPurchase.swift +8 -8
  70. package/nitrogen/generated/ios/swift/NitroReceiptValidationAndroidOptions.swift +21 -21
  71. package/nitrogen/generated/ios/swift/NitroReceiptValidationResultAndroid.swift +37 -11
  72. package/nitrogen/generated/ios/swift/NitroRequestPurchaseAndroid.swift +11 -11
  73. package/nitrogen/generated/ios/swift/RequestPurchaseResult.swift +8 -137
  74. package/nitrogen/generated/shared/c++/{NitroSubscriptionOffer.hpp → AndroidSubscriptionOfferInput.hpp} +15 -15
  75. package/nitrogen/generated/shared/c++/HybridRnIapSpec.hpp +9 -6
  76. package/nitrogen/generated/shared/c++/NitroAvailablePurchasesAndroidOptions.hpp +8 -7
  77. package/nitrogen/generated/shared/c++/NitroAvailablePurchasesAndroidType.hpp +76 -0
  78. package/nitrogen/generated/shared/c++/NitroProduct.hpp +24 -22
  79. package/nitrogen/generated/shared/c++/NitroPurchase.hpp +15 -10
  80. package/nitrogen/generated/shared/c++/NitroReceiptValidationAndroidOptions.hpp +10 -10
  81. package/nitrogen/generated/shared/c++/NitroReceiptValidationResultAndroid.hpp +9 -9
  82. package/nitrogen/generated/shared/c++/NitroRequestPurchaseAndroid.hpp +8 -8
  83. package/package.json +2 -2
  84. package/plugin/build/withIAP.d.ts +1 -0
  85. package/plugin/build/withIAP.js +8 -2
  86. package/plugin/src/withIAP.ts +13 -3
  87. package/src/hooks/useIAP.ts +63 -32
  88. package/src/index.ts +832 -796
  89. package/src/specs/RnIap.nitro.ts +131 -163
  90. package/src/types.ts +131 -85
  91. package/src/utils/purchase.ts +32 -0
  92. package/src/utils.ts +68 -0
  93. package/nitrogen/generated/android/c++/JVariant_PurchaseAndroid_PurchaseIOS.cpp +0 -26
  94. package/nitrogen/generated/android/c++/JVariant_PurchaseAndroid_PurchaseIOS.hpp +0 -80
  95. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Variant_PurchaseAndroid_PurchaseIOS.kt +0 -42
  96. package/nitrogen/generated/ios/swift/Func_void_RequestPurchaseResult.swift +0 -47
  97. package/nitrogen/generated/ios/swift/Variant_PurchaseAndroid_PurchaseIOS.swift +0 -18
  98. 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.10"
97
+ implementation "io.github.hyochan.openiap:openiap-google:1.1.12"
98
98
  }
99
99
  ```
100
100
 
@@ -155,9 +155,7 @@ dependencies {
155
155
 
156
156
  // Kotlin coroutines
157
157
  implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0'
158
-
159
- // OpenIAP Google (v1.1.10)
160
- implementation 'io.github.hyochan.openiap:openiap-google:1.1.10'
158
+ implementation 'io.github.hyochan.openiap:openiap-google:1.1.12'
161
159
  }
162
160
 
163
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
- val reqType = ProductRequest.ProductRequestType.fromString(type)
144
- val products = openIap.fetchProducts(ProductRequest(skus.toList(), reqType))
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(null, null)
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 result: List<OpenIapPurchase> = if (androidOptions?.type != null) {
218
- val typeEnum = ProductRequest.ProductRequestType.fromString(androidOptions.type ?: "inapp")
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 = "android",
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 = "android",
501
+ platform = IapPlatform.ANDROID,
463
502
  // Common fields
464
503
  quantity = purchase.quantity.toDouble(),
465
- purchaseState = purchase.purchaseState.value,
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
- DeepLinkOptions(
569
+ OpenIapDeepLinkOptions(
520
570
  skuAndroid = options.skuAndroid,
521
571
  packageNameAndroid = options.packageNameAndroid
522
572
  ).let { openIap.deepLinkToSubscriptions(it) }
@@ -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 = "ios"
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 = "ios"
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
- // Prefer OpenIAP for fetching
191
- let req = OpenIapProductRequest(skus: skus, type: type)
192
- let products = try await OpenIapModule.shared.fetchProducts(req)
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 = RequestPurchaseResult(purchase: nil, purchases: nil)
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 = "ios"
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 = "ios"
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
- n.platform = p.platform
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
- n.platform = p.platform
744
+ if let platform = IapPlatform(fromString: p.platform) {
745
+ n.platform = platform
746
+ }
714
747
  n.quantity = Double(p.quantity)
715
- n.purchaseState = p.purchaseState.rawValue
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
- setProducts(prevProducts => mergeWithDuplicateCheck(prevProducts, result, product => product.id));
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
- setSubscriptions(prevSubscriptions => mergeWithDuplicateCheck(prevSubscriptions, result, subscription => subscription.id));
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 result = await fetchProducts(params);
83
- if (params.type === 'subs') {
84
- setSubscriptions(prevSubscriptions => mergeWithDuplicateCheck(prevSubscriptions, result, subscription => subscription.id));
85
- } else {
86
- setProducts(prevProducts => mergeWithDuplicateCheck(prevProducts, result, product => product.id));
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
- return await finishTransactionInternal({
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(sku, androidOptions);
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
- const purchases = await restorePurchasesTopLevel({
219
- alsoPublishToEventListenerIOS: false,
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","purchase","isConsumable","err","requestObj","sku","androidOptions","initIapWithSubscriptions","purchaseUpdate","e","onPurchaseSuccess","purchaseError","mappedError","code","message","productId","undefined","InitConnection","onPurchaseError","OS","onPromotedProductIOS","remove","currentSubscriptions","purchases","getProducts","getSubscriptions"],"sourceRoot":"../../../src","sources":["hooks/useIAP.ts"],"mappings":"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","ignoreList":[]}
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":[]}