react-native-iap 16.0.0 → 16.0.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.
Files changed (45) hide show
  1. package/android/src/main/java/com/margelo/nitro/iap/HybridRnIap.kt +15 -7
  2. package/ios/HybridRnIap.swift +11 -6
  3. package/ios/RnIapHelper.swift +33 -1
  4. package/lib/module/hooks/useIAP.js +27 -9
  5. package/lib/module/hooks/useIAP.js.map +1 -1
  6. package/lib/module/index.js +34 -22
  7. package/lib/module/index.js.map +1 -1
  8. package/lib/module/index.kepler.js +3 -2
  9. package/lib/module/index.kepler.js.map +1 -1
  10. package/lib/module/types.js.map +1 -1
  11. package/lib/module/utils/available-purchases.js +59 -0
  12. package/lib/module/utils/available-purchases.js.map +1 -0
  13. package/lib/module/utils/type-bridge.js +56 -6
  14. package/lib/module/utils/type-bridge.js.map +1 -1
  15. package/lib/module/vega-adapter.js +13 -7
  16. package/lib/module/vega-adapter.js.map +1 -1
  17. package/lib/typescript/src/hooks/useIAP.d.ts.map +1 -1
  18. package/lib/typescript/src/index.d.ts.map +1 -1
  19. package/lib/typescript/src/index.kepler.d.ts.map +1 -1
  20. package/lib/typescript/src/specs/RnIap.nitro.d.ts +2 -0
  21. package/lib/typescript/src/specs/RnIap.nitro.d.ts.map +1 -1
  22. package/lib/typescript/src/types.d.ts +11 -0
  23. package/lib/typescript/src/types.d.ts.map +1 -1
  24. package/lib/typescript/src/utils/available-purchases.d.ts +8 -0
  25. package/lib/typescript/src/utils/available-purchases.d.ts.map +1 -0
  26. package/lib/typescript/src/utils/type-bridge.d.ts.map +1 -1
  27. package/lib/typescript/src/vega-adapter.d.ts.map +1 -1
  28. package/nitrogen/generated/android/c++/JNitroPurchase.hpp +11 -3
  29. package/nitrogen/generated/android/c++/JPurchaseAndroid.hpp +11 -3
  30. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroPurchase.kt +14 -4
  31. package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/PurchaseAndroid.kt +14 -4
  32. package/nitrogen/generated/ios/swift/NitroPurchase.swift +75 -1
  33. package/nitrogen/generated/ios/swift/PurchaseAndroid.swift +75 -1
  34. package/nitrogen/generated/shared/c++/NitroPurchase.hpp +10 -2
  35. package/nitrogen/generated/shared/c++/PurchaseAndroid.hpp +10 -2
  36. package/openiap-versions.json +3 -3
  37. package/package.json +1 -1
  38. package/src/hooks/useIAP.ts +27 -10
  39. package/src/index.kepler.ts +5 -9
  40. package/src/index.ts +41 -45
  41. package/src/specs/RnIap.nitro.ts +2 -0
  42. package/src/types.ts +11 -0
  43. package/src/utils/available-purchases.ts +73 -0
  44. package/src/utils/type-bridge.ts +84 -9
  45. package/src/vega-adapter.ts +24 -3
@@ -512,6 +512,7 @@ class HybridRnIap : HybridRnIapSpec() {
512
512
  return@async defaultResult
513
513
  }
514
514
 
515
+ var reachedOpenIapRequest = false
515
516
  try {
516
517
  ensureConnection()
517
518
 
@@ -628,6 +629,7 @@ class HybridRnIap : HybridRnIapSpec() {
628
629
  )
629
630
 
630
631
  val result = withContext(Dispatchers.Main) {
632
+ reachedOpenIapRequest = true
631
633
  openIap.requestPurchase(requestProps)
632
634
  }
633
635
  val purchases = result.purchasesOrEmpty()
@@ -640,15 +642,19 @@ class HybridRnIap : HybridRnIapSpec() {
640
642
  )
641
643
 
642
644
  defaultResult
645
+ } catch (e: CancellationException) {
646
+ throw e
643
647
  } catch (e: Exception) {
644
648
  RnIapLog.failure("requestPurchase", e)
645
- sendPurchaseError(
646
- toErrorResult(
647
- error = OpenIapError.PurchaseFailed(),
648
- debugMessage = e.message,
649
- messageOverride = e.message
649
+ if (!reachedOpenIapRequest) {
650
+ sendPurchaseError(
651
+ toErrorResult(
652
+ error = OpenIapError.PurchaseFailed(),
653
+ debugMessage = e.message,
654
+ messageOverride = e.message
655
+ )
650
656
  )
651
- )
657
+ }
652
658
  defaultResult
653
659
  }
654
660
  }
@@ -1306,7 +1312,9 @@ class HybridRnIap : HybridRnIapSpec() {
1306
1312
  obfuscatedProfileIdAndroid = androidPurchase?.obfuscatedProfileIdAndroid.wrapVariant(),
1307
1313
  developerPayloadAndroid = androidPurchase?.developerPayloadAndroid.wrapVariant(),
1308
1314
  isSuspendedAndroid = androidPurchase?.isSuspendedAndroid.wrapVariant(),
1309
- pendingPurchaseUpdateAndroid = androidPurchase?.pendingPurchaseUpdateAndroid.wrapVariant()
1315
+ pendingPurchaseUpdateAndroid = androidPurchase?.pendingPurchaseUpdateAndroid.wrapVariant(),
1316
+ userIdAmazon = androidPurchase?.userIdAmazon.wrapVariant(),
1317
+ userMarketplaceAmazon = androidPurchase?.userMarketplaceAmazon.wrapVariant()
1310
1318
  )
1311
1319
  }
1312
1320
 
@@ -311,7 +311,7 @@ class HybridRnIap: HybridRnIapSpec {
311
311
  let purchaseOptions = try OpenIapSerialization.purchaseOptions(from: optionsDictionary)
312
312
  RnIapLog.payload("getAvailablePurchases", optionsDictionary)
313
313
  let purchases = try await OpenIapModule.shared.getAvailablePurchases(purchaseOptions)
314
- let payloads = RnIapHelper.sanitizeArray(OpenIapSerialization.purchases(purchases))
314
+ let payloads = RnIapHelper.sanitizeArray(try RnIapHelper.purchasesRequired(purchases))
315
315
  RnIapLog.result("getAvailablePurchases", payloads)
316
316
  return payloads.map { RnIapHelper.convertPurchaseDictionary($0) }
317
317
  } catch let purchaseError as PurchaseError {
@@ -331,7 +331,9 @@ class HybridRnIap: HybridRnIapSpec {
331
331
  RnIapLog.payload("getActiveSubscriptions", subscriptionIds ?? [])
332
332
  // Call OpenIAP's native getActiveSubscriptions - includes renewalInfoIOS!
333
333
  let subscriptions = try await OpenIapModule.shared.getActiveSubscriptions(subscriptionIds)
334
- let payloads = RnIapHelper.sanitizeArray(subscriptions.map { OpenIapSerialization.encode($0) })
334
+ let payloads = RnIapHelper.sanitizeArray(
335
+ try subscriptions.map { try RnIapHelper.encodeRequired($0) }
336
+ )
335
337
  RnIapLog.result("getActiveSubscriptions", payloads)
336
338
  return payloads.map { RnIapHelper.convertActiveSubscriptionDictionary($0) }
337
339
  } catch let purchaseError as PurchaseError {
@@ -761,12 +763,15 @@ class HybridRnIap: HybridRnIapSpec {
761
763
  }
762
764
  }
763
765
  }
764
- let payloads = RnIapHelper.sanitizeArray(OpenIapSerialization.purchases(unionPurchases))
766
+ let payloads = RnIapHelper.sanitizeArray(try RnIapHelper.purchasesRequired(unionPurchases))
765
767
  RnIapLog.result("getPendingTransactionsIOS", payloads)
766
768
  return payloads.map { RnIapHelper.convertPurchaseDictionary($0) }
769
+ } catch let purchaseError as PurchaseError {
770
+ RnIapLog.failure("getPendingTransactionsIOS", error: purchaseError)
771
+ throw OpenIapException.from(purchaseError)
767
772
  } catch {
768
773
  RnIapLog.failure("getPendingTransactionsIOS", error: error)
769
- return []
774
+ throw OpenIapException.make(code: .serviceError, message: error.localizedDescription)
770
775
  }
771
776
  }
772
777
  }
@@ -792,7 +797,7 @@ class HybridRnIap: HybridRnIapSpec {
792
797
  self.purchasePayloadById[key] = value
793
798
  }
794
799
  }
795
- let payloads = RnIapHelper.sanitizeArray(OpenIapSerialization.purchases(unionPurchases))
800
+ let payloads = RnIapHelper.sanitizeArray(try RnIapHelper.purchasesRequired(unionPurchases))
796
801
  RnIapLog.result("getAllTransactionsIOS", payloads)
797
802
  return payloads.map { RnIapHelper.convertPurchaseDictionary($0) }
798
803
  } catch let purchaseError as PurchaseError {
@@ -829,7 +834,7 @@ class HybridRnIap: HybridRnIapSpec {
829
834
  RnIapLog.payload("showManageSubscriptionsIOS", nil)
830
835
  let changedPurchases = try await OpenIapModule.shared.showManageSubscriptionsIOS()
831
836
  let unionPurchases = changedPurchases.map { OpenIAP.Purchase.purchaseIos($0) }
832
- let payloads = RnIapHelper.sanitizeArray(OpenIapSerialization.purchases(unionPurchases))
837
+ let payloads = RnIapHelper.sanitizeArray(try RnIapHelper.purchasesRequired(unionPurchases))
833
838
  RnIapLog.result("showManageSubscriptionsIOS", payloads)
834
839
  return payloads.map { RnIapHelper.convertPurchaseDictionary($0) }
835
840
  } catch let purchaseError as PurchaseError {
@@ -65,6 +65,36 @@ enum RnIapHelper {
65
65
  array.map { sanitizeDictionary($0) }
66
66
  }
67
67
 
68
+ // The currently published native OpenIAP package reports an encoding
69
+ // failure as an empty dictionary. Reject that sentinel so a partial batch
70
+ // can never be surfaced as a successful query.
71
+ static func encodeRequired<T: Encodable>(_ value: T) throws -> [String: Any] {
72
+ let encoded = OpenIapSerialization.encode(value)
73
+ guard !encoded.isEmpty else {
74
+ throw PurchaseError.make(
75
+ code: .billingResponseJsonParseError,
76
+ message: "Failed to serialize native \(T.self) payload"
77
+ )
78
+ }
79
+ return encoded
80
+ }
81
+
82
+ // The currently published native OpenIAP package reports an encoding
83
+ // failure as an empty dictionary. Reject that sentinel so a partial batch
84
+ // can never be surfaced as a successful purchase query.
85
+ static func purchasesRequired(_ purchases: [OpenIAP.Purchase]) throws -> [[String: Any]] {
86
+ try purchases.map { purchase in
87
+ let encoded = OpenIapSerialization.purchase(purchase)
88
+ guard !encoded.isEmpty else {
89
+ throw PurchaseError.make(
90
+ code: .billingResponseJsonParseError,
91
+ message: "Failed to serialize native purchase payload"
92
+ )
93
+ }
94
+ return encoded
95
+ }
96
+ }
97
+
68
98
  // MARK: - Variant wrapper helpers
69
99
 
70
100
  static func wrapString(_ value: String?) -> Variant_NullType_String? {
@@ -429,7 +459,9 @@ enum RnIapHelper {
429
459
  obfuscatedProfileIdAndroid: nil,
430
460
  developerPayloadAndroid: nil,
431
461
  isSuspendedAndroid: nil,
432
- pendingPurchaseUpdateAndroid: nil
462
+ pendingPurchaseUpdateAndroid: nil,
463
+ userIdAmazon: nil,
464
+ userMarketplaceAmazon: nil
433
465
  )
434
466
  }
435
467
 
@@ -4,6 +4,7 @@
4
4
  import { useCallback, useEffect, useState, useRef } from 'react';
5
5
  import { Platform } from 'react-native';
6
6
  import { RnIapConsole } from "../utils/debug.js";
7
+ import { createPurchaseError } from "../utils/errorMapping.js";
7
8
 
8
9
  // Internal modules
9
10
  import { initConnection, purchaseErrorListener, purchaseUpdatedListener, promotedProductListenerIOS, getAvailablePurchases, finishTransaction as finishTransactionInternal, requestPurchase as requestPurchaseInternal, fetchProducts, verifyPurchase as verifyPurchaseTopLevel, verifyPurchaseWithProvider as verifyPurchaseWithProviderTopLevel, getActiveSubscriptions, hasActiveSubscriptions, syncIOS, getPromotedProductIOS, getBillingChoiceInfoAndroid, isBillingProgramAvailableAndroid, createBillingProgramReportingDetailsAndroid, launchExternalLinkAndroid, showBillingProgramInformationDialogAndroid, showInAppMessagesAndroid, openRedeemOfferCodeAndroid, userChoiceBillingListenerAndroid, developerProvidedBillingListenerAndroid, subscriptionBillingIssueListener, isStandardIOS } from "../index.js";
@@ -112,6 +113,7 @@ export function useIAP(options) {
112
113
  } catch (error) {
113
114
  RnIapConsole.error('Error fetching available purchases:', error);
114
115
  invokeOnError(error);
116
+ throw error;
115
117
  }
116
118
  }, [invokeOnError]);
117
119
  const getActiveSubscriptionsInternal = useCallback(async subscriptionIds => {
@@ -124,7 +126,7 @@ export function useIAP(options) {
124
126
  } catch (error) {
125
127
  RnIapConsole.error('Error getting active subscriptions:', error);
126
128
  invokeOnError(error);
127
- return [];
129
+ throw error;
128
130
  }
129
131
  }, [invokeOnError]);
130
132
  const hasActiveSubscriptionsInternal = useCallback(async subscriptionIds => {
@@ -133,7 +135,7 @@ export function useIAP(options) {
133
135
  } catch (error) {
134
136
  RnIapConsole.error('Error checking active subscriptions:', error);
135
137
  invokeOnError(error);
136
- return false;
138
+ throw error;
137
139
  }
138
140
  }, [invokeOnError]);
139
141
  const finishTransaction = useCallback(async args => {
@@ -148,15 +150,26 @@ export function useIAP(options) {
148
150
  await requestPurchaseInternal(requestObj);
149
151
  }, []);
150
152
  const restorePurchases = useCallback(async options => {
151
- try {
152
- if (Platform.OS === 'ios') {
153
- await syncIOS();
153
+ if (Platform.OS === 'ios') {
154
+ try {
155
+ const synced = await syncIOS();
156
+ if (!synced) {
157
+ throw createPurchaseError({
158
+ code: ErrorCode.SyncError,
159
+ message: 'App Store purchase sync did not complete',
160
+ platform: 'ios'
161
+ });
162
+ }
163
+ } catch (error) {
164
+ RnIapConsole.warn('Failed to restore purchases:', error);
165
+ invokeOnError(error);
166
+ throw error;
154
167
  }
155
- await getAvailablePurchasesInternal(options);
156
- } catch (error) {
157
- RnIapConsole.warn('Failed to restore purchases:', error);
158
- invokeOnError(error);
159
168
  }
169
+
170
+ // The query helper reports and rethrows its own error, avoiding a second
171
+ // onError call while keeping restore failure observable to the caller.
172
+ await getAvailablePurchasesInternal(options);
160
173
  }, [getAvailablePurchasesInternal, invokeOnError]);
161
174
  const verifyPurchase = useCallback(async options => {
162
175
  return verifyPurchaseTopLevel(options);
@@ -191,6 +204,11 @@ export function useIAP(options) {
191
204
  } catch (e) {
192
205
  RnIapConsole.warn('[useIAP] post-purchase refresh failed:', e);
193
206
  }
207
+
208
+ // Deliver even if the hook unmounted while the refresh was pending:
209
+ // onPurchaseSuccess is where apps call finishTransaction, and a
210
+ // dropped event has no in-session redelivery. Internal setState is
211
+ // mount-guarded inside the refresh helpers.
194
212
  if (optionsRef.current?.onPurchaseSuccess) {
195
213
  optionsRef.current.onPurchaseSuccess(purchase);
196
214
  }
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","useState","useRef","Platform","RnIapConsole","initConnection","purchaseErrorListener","purchaseUpdatedListener","promotedProductListenerIOS","getAvailablePurchases","finishTransaction","finishTransactionInternal","requestPurchase","requestPurchaseInternal","fetchProducts","verifyPurchase","verifyPurchaseTopLevel","verifyPurchaseWithProvider","verifyPurchaseWithProviderTopLevel","getActiveSubscriptions","hasActiveSubscriptions","syncIOS","getPromotedProductIOS","getBillingChoiceInfoAndroid","isBillingProgramAvailableAndroid","createBillingProgramReportingDetailsAndroid","launchExternalLinkAndroid","showBillingProgramInformationDialogAndroid","showInAppMessagesAndroid","openRedeemOfferCodeAndroid","userChoiceBillingListenerAndroid","developerProvidedBillingListenerAndroid","subscriptionBillingIssueListener","isStandardIOS","ErrorCode","useIAP","options","connected","setConnected","products","setProducts","subscriptions","setSubscriptions","availablePurchases","setAvailablePurchases","promotedProductIOS","setPromotedProductIOS","activeSubscriptions","setActiveSubscriptions","optionsRef","connectedRef","mergeWithDuplicateCheck","existingItems","newItems","getKey","merged","forEach","newItem","isDuplicate","some","existingItem","push","current","subscriptionsRef","isMountedRef","subscriptionsRefState","invokeOnError","error","onError","Error","String","fetchProductsInternal","params","warn","requestType","type","debug","skus","result","length","items","prevSubscriptions","subscription","id","newProducts","filter","item","newSubscriptions","prevProducts","product","getAvailablePurchasesInternal","alsoPublishToEventListenerIOS","onlyIncludeActiveItemsIOS","includeSuspendedAndroid","getActiveSubscriptionsInternal","subscriptionIds","hasActiveSubscriptionsInternal","args","requestObj","restorePurchases","OS","buildAndroidConfig","config","enableBillingProgramAndroid","billingChoiceScreenTypeAndroid","registerListeners","purchaseUpdate","purchase","e","onPurchaseSuccess","purchaseUpdatedListenerOptions","purchaseError","code","InitConnection","onPurchaseError","onPromotedProductIOS","onUserChoiceBillingAndroid","userChoiceBillingAndroid","details","onDeveloperProvidedBillingAndroid","developerProvidedBillingAndroid","subscriptionBillingIssue","onSubscriptionBillingIssue","cleanupListeners","remove","undefined","initIapWithSubscriptions","reconnect"],"sourceRoot":"../../../src","sources":["hooks/useIAP.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useEffect","useState","useRef","Platform","RnIapConsole","createPurchaseError","initConnection","purchaseErrorListener","purchaseUpdatedListener","promotedProductListenerIOS","getAvailablePurchases","finishTransaction","finishTransactionInternal","requestPurchase","requestPurchaseInternal","fetchProducts","verifyPurchase","verifyPurchaseTopLevel","verifyPurchaseWithProvider","verifyPurchaseWithProviderTopLevel","getActiveSubscriptions","hasActiveSubscriptions","syncIOS","getPromotedProductIOS","getBillingChoiceInfoAndroid","isBillingProgramAvailableAndroid","createBillingProgramReportingDetailsAndroid","launchExternalLinkAndroid","showBillingProgramInformationDialogAndroid","showInAppMessagesAndroid","openRedeemOfferCodeAndroid","userChoiceBillingListenerAndroid","developerProvidedBillingListenerAndroid","subscriptionBillingIssueListener","isStandardIOS","ErrorCode","useIAP","options","connected","setConnected","products","setProducts","subscriptions","setSubscriptions","availablePurchases","setAvailablePurchases","promotedProductIOS","setPromotedProductIOS","activeSubscriptions","setActiveSubscriptions","optionsRef","connectedRef","mergeWithDuplicateCheck","existingItems","newItems","getKey","merged","forEach","newItem","isDuplicate","some","existingItem","push","current","subscriptionsRef","isMountedRef","subscriptionsRefState","invokeOnError","error","onError","Error","String","fetchProductsInternal","params","warn","requestType","type","debug","skus","result","length","items","prevSubscriptions","subscription","id","newProducts","filter","item","newSubscriptions","prevProducts","product","getAvailablePurchasesInternal","alsoPublishToEventListenerIOS","onlyIncludeActiveItemsIOS","includeSuspendedAndroid","getActiveSubscriptionsInternal","subscriptionIds","hasActiveSubscriptionsInternal","args","requestObj","restorePurchases","OS","synced","code","SyncError","message","platform","buildAndroidConfig","config","enableBillingProgramAndroid","billingChoiceScreenTypeAndroid","registerListeners","purchaseUpdate","purchase","e","onPurchaseSuccess","purchaseUpdatedListenerOptions","purchaseError","InitConnection","onPurchaseError","onPromotedProductIOS","onUserChoiceBillingAndroid","userChoiceBillingAndroid","details","onDeveloperProvidedBillingAndroid","developerProvidedBillingAndroid","subscriptionBillingIssue","onSubscriptionBillingIssue","cleanupListeners","remove","undefined","initIapWithSubscriptions","reconnect"],"sourceRoot":"../../../src","sources":["hooks/useIAP.ts"],"mappings":"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","ignoreList":[]}
@@ -15,6 +15,7 @@ import { normalizeErrorCodeFromNative, createPurchaseError, DUPLICATE_PURCHASE_C
15
15
  import { RnIapConsole } from "./utils/debug.js";
16
16
  import { getSuccessFromPurchaseVariant } from "./utils/purchase.js";
17
17
  import { parseAppTransactionPayload } from "./utils.js";
18
+ import { convertAndroidPurchasesOrThrow, convertApplePurchasesOrThrow } from "./utils/available-purchases.js";
18
19
  import { getVegaIapModule, isVegaOS } from "./vega.js";
19
20
 
20
21
  // ------------------------------
@@ -273,6 +274,13 @@ export const purchaseUpdatedListener = (listener, options) => {
273
274
  if (listeners.size > 0) {
274
275
  return;
275
276
  }
277
+
278
+ // StoreKit-backed Nitro listener disposal can abort in iOS release builds
279
+ // when a native modal is being popped. Keep the singleton native listener
280
+ // attached for the app session and only remove the JS callback above.
281
+ if (Platform.OS === 'ios') {
282
+ return;
283
+ }
276
284
  const token = receiveDuplicateTransactionUpdatesIOS ? purchaseUpdateDuplicateNativeToken : purchaseUpdateNativeToken;
277
285
  if (token == null) {
278
286
  return;
@@ -310,7 +318,18 @@ export const purchaseErrorListener = listener => {
310
318
  return {
311
319
  remove: () => {
312
320
  purchaseErrorJsListeners.delete(listener);
313
- if (purchaseErrorJsListeners.size === 0 && purchaseErrorNativeAttached) {
321
+ if (purchaseErrorJsListeners.size > 0) {
322
+ return;
323
+ }
324
+
325
+ // Same iOS policy as purchaseUpdatedListener: releasing the stored
326
+ // native callback from a JS unsubscribe can race an in-flight dispatch
327
+ // snapshot on another thread. Keep the singleton attached; endConnection
328
+ // owns native disposal.
329
+ if (Platform.OS === 'ios') {
330
+ return;
331
+ }
332
+ if (purchaseErrorNativeAttached) {
314
333
  try {
315
334
  IAP.instance.removePurchaseErrorListener(purchaseErrorNativeHandler);
316
335
  purchaseErrorNativeAttached = false;
@@ -680,11 +699,7 @@ export const getAvailablePurchases = async options => {
680
699
  }
681
700
  };
682
701
  const nitroPurchases = await IAP.instance.getAvailablePurchases(nitroOptions);
683
- const validPurchases = nitroPurchases.filter(validateNitroPurchase);
684
- if (validPurchases.length !== nitroPurchases.length) {
685
- RnIapConsole.warn(`[getAvailablePurchases] Some purchases failed validation: ${nitroPurchases.length - validPurchases.length} invalid`);
686
- }
687
- return validPurchases.map(convertNitroPurchaseToPurchase);
702
+ return convertApplePurchasesOrThrow(nitroPurchases);
688
703
  } else if (isAndroidStoreRuntime()) {
689
704
  const includeSuspended = Boolean(options?.includeSuspendedAndroid ?? false);
690
705
  if (isVegaOS()) {
@@ -693,11 +708,7 @@ export const getAvailablePurchases = async options => {
693
708
  includeSuspended
694
709
  }
695
710
  });
696
- const validPurchases = nitroPurchases.filter(validateNitroPurchase);
697
- if (validPurchases.length !== nitroPurchases.length) {
698
- RnIapConsole.warn(`[getAvailablePurchases] Some Vega purchases failed validation: ${nitroPurchases.length - validPurchases.length} invalid`);
699
- }
700
- return validPurchases.map(convertNitroPurchaseToPurchase);
711
+ return convertAndroidPurchasesOrThrow(nitroPurchases);
701
712
  }
702
713
 
703
714
  // For Android Play/Horizon/Fire OS, query in-app items and subscriptions separately.
@@ -713,14 +724,8 @@ export const getAvailablePurchases = async options => {
713
724
  includeSuspended
714
725
  }
715
726
  });
716
-
717
- // Validate and convert both sets of purchases
718
727
  const allNitroPurchases = [...inappNitroPurchases, ...subsNitroPurchases];
719
- const validPurchases = allNitroPurchases.filter(validateNitroPurchase);
720
- if (validPurchases.length !== allNitroPurchases.length) {
721
- RnIapConsole.warn(`[getAvailablePurchases] Some Android purchases failed validation: ${allNitroPurchases.length - validPurchases.length} invalid`);
722
- }
723
- return validPurchases.map(convertNitroPurchaseToPurchase);
728
+ return convertAndroidPurchasesOrThrow(allNitroPurchases);
724
729
  } else {
725
730
  throw unsupportedPlatformError();
726
731
  }
@@ -942,7 +947,7 @@ export const getPendingTransactionsIOS = async () => {
942
947
  }
943
948
  try {
944
949
  const nitroPurchases = await IAP.instance.getPendingTransactionsIOS();
945
- return nitroPurchases.map(convertNitroPurchaseToPurchase).filter(purchase => purchase.store === 'apple');
950
+ return convertApplePurchasesOrThrow(nitroPurchases);
946
951
  } catch (error) {
947
952
  const parsedError = parseErrorAndLogIfNeeded('[getPendingTransactionsIOS] Failed:', error);
948
953
  throw createPurchaseError({
@@ -965,7 +970,7 @@ export const getAllTransactionsIOS = async () => {
965
970
  }
966
971
  try {
967
972
  const nitroPurchases = await IAP.instance.getAllTransactionsIOS();
968
- return nitroPurchases.map(convertNitroPurchaseToPurchase).filter(purchase => purchase.store === 'apple');
973
+ return convertApplePurchasesOrThrow(nitroPurchases);
969
974
  } catch (error) {
970
975
  const parsedError = parseErrorAndLogIfNeeded('[getAllTransactionsIOS] Failed:', error);
971
976
  throw createPurchaseError({
@@ -990,7 +995,7 @@ export const showManageSubscriptionsIOS = async () => {
990
995
  }
991
996
  try {
992
997
  const nitroPurchases = await IAP.instance.showManageSubscriptionsIOS();
993
- return nitroPurchases.map(convertNitroPurchaseToPurchase).filter(purchase => purchase.store === 'apple');
998
+ return convertApplePurchasesOrThrow(nitroPurchases);
994
999
  } catch (error) {
995
1000
  const parsedError = parseErrorAndLogIfNeeded('[showManageSubscriptionsIOS] Failed:', error);
996
1001
  throw createPurchaseError({
@@ -1197,7 +1202,14 @@ export const endConnection = async () => {
1197
1202
  export const restorePurchases = async () => {
1198
1203
  try {
1199
1204
  if (Platform.OS === 'ios') {
1200
- await syncIOS();
1205
+ const synced = await syncIOS();
1206
+ if (!synced) {
1207
+ throw createPurchaseError({
1208
+ code: ErrorCode.SyncError,
1209
+ message: 'App Store purchase sync did not complete',
1210
+ platform: 'ios'
1211
+ });
1212
+ }
1201
1213
  }
1202
1214
  await getAvailablePurchases({
1203
1215
  alsoPublishToEventListenerIOS: false,