react-native-iap 9.0.3 → 10.0.1

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 (69) hide show
  1. package/android/src/amazon/java/com/dooboolab/RNIap/RNIapAmazonModule.kt +2 -1
  2. package/android/src/play/java/com/dooboolab/RNIap/RNIapModule.kt +2 -1
  3. package/lib/commonjs/eventEmitter.js +54 -0
  4. package/lib/commonjs/eventEmitter.js.map +1 -0
  5. package/lib/commonjs/hooks/useIAP.js +33 -15
  6. package/lib/commonjs/hooks/useIAP.js.map +1 -1
  7. package/lib/commonjs/hooks/withIAPContext.js +9 -7
  8. package/lib/commonjs/hooks/withIAPContext.js.map +1 -1
  9. package/lib/commonjs/iap.js +131 -197
  10. package/lib/commonjs/iap.js.map +1 -1
  11. package/lib/commonjs/index.js +28 -15
  12. package/lib/commonjs/index.js.map +1 -1
  13. package/lib/commonjs/internal/enhancedFetch.js +30 -0
  14. package/lib/commonjs/internal/enhancedFetch.js.map +1 -0
  15. package/lib/commonjs/internal/fillProductsWithAdditionalData.js +47 -0
  16. package/lib/commonjs/internal/fillProductsWithAdditionalData.js.map +1 -0
  17. package/lib/commonjs/internal/index.js +45 -0
  18. package/lib/commonjs/internal/index.js.map +1 -0
  19. package/lib/commonjs/internal/platform.js +19 -0
  20. package/lib/commonjs/internal/platform.js.map +1 -0
  21. package/lib/commonjs/purchaseError.js +47 -0
  22. package/lib/commonjs/purchaseError.js.map +1 -0
  23. package/lib/commonjs/types/index.js +1 -23
  24. package/lib/commonjs/types/index.js.map +1 -1
  25. package/lib/module/eventEmitter.js +36 -0
  26. package/lib/module/eventEmitter.js.map +1 -0
  27. package/lib/module/hooks/useIAP.js +34 -16
  28. package/lib/module/hooks/useIAP.js.map +1 -1
  29. package/lib/module/hooks/withIAPContext.js +6 -5
  30. package/lib/module/hooks/withIAPContext.js.map +1 -1
  31. package/lib/module/iap.js +123 -186
  32. package/lib/module/iap.js.map +1 -1
  33. package/lib/module/index.js +2 -2
  34. package/lib/module/index.js.map +1 -1
  35. package/lib/module/internal/enhancedFetch.js +21 -0
  36. package/lib/module/internal/enhancedFetch.js.map +1 -0
  37. package/lib/module/internal/fillProductsWithAdditionalData.js +37 -0
  38. package/lib/module/internal/fillProductsWithAdditionalData.js.map +1 -0
  39. package/lib/module/internal/index.js +4 -0
  40. package/lib/module/internal/index.js.map +1 -0
  41. package/lib/module/internal/platform.js +8 -0
  42. package/lib/module/internal/platform.js.map +1 -0
  43. package/lib/module/purchaseError.js +38 -0
  44. package/lib/module/purchaseError.js.map +1 -0
  45. package/lib/module/types/index.js +0 -21
  46. package/lib/module/types/index.js.map +1 -1
  47. package/lib/typescript/eventEmitter.d.ts +17 -0
  48. package/lib/typescript/hooks/useIAP.d.ts +15 -9
  49. package/lib/typescript/hooks/withIAPContext.d.ts +4 -3
  50. package/lib/typescript/iap.d.ts +80 -41
  51. package/lib/typescript/index.d.ts +2 -2
  52. package/lib/typescript/internal/enhancedFetch.d.ts +6 -0
  53. package/lib/typescript/internal/fillProductsWithAdditionalData.d.ts +5 -0
  54. package/lib/typescript/internal/index.d.ts +3 -0
  55. package/lib/typescript/internal/platform.d.ts +3 -0
  56. package/lib/typescript/purchaseError.d.ts +26 -0
  57. package/lib/typescript/types/index.d.ts +1 -48
  58. package/package.json +1 -1
  59. package/src/eventEmitter.ts +49 -0
  60. package/src/hooks/useIAP.ts +38 -35
  61. package/src/hooks/withIAPContext.tsx +12 -13
  62. package/src/iap.ts +165 -242
  63. package/src/index.ts +2 -4
  64. package/src/internal/enhancedFetch.ts +25 -0
  65. package/src/internal/fillProductsWithAdditionalData.ts +43 -0
  66. package/src/internal/index.ts +3 -0
  67. package/src/internal/platform.ts +7 -0
  68. package/src/purchaseError.ts +35 -0
  69. package/src/types/index.ts +1 -59
@@ -9,8 +9,9 @@ import com.facebook.react.bridge.ReactContextBaseJavaModule
9
9
  import com.facebook.react.bridge.ReactMethod
10
10
  import com.facebook.react.bridge.ReadableArray
11
11
  import com.facebook.react.bridge.WritableNativeArray
12
+ import com.facebook.react.module.annotations.ReactModule
12
13
  import java.util.HashSet
13
-
14
+ @ReactModule(name = RNIapAmazonModule.TAG)
14
15
  class RNIapAmazonModule(reactContext: ReactApplicationContext) :
15
16
  ReactContextBaseJavaModule(reactContext) {
16
17
  var hasListener = false
@@ -30,11 +30,12 @@ import com.facebook.react.bridge.WritableArray
30
30
  import com.facebook.react.bridge.WritableMap
31
31
  import com.facebook.react.bridge.WritableNativeArray
32
32
  import com.facebook.react.bridge.WritableNativeMap
33
+ import com.facebook.react.module.annotations.ReactModule
33
34
  import com.facebook.react.modules.core.DeviceEventManagerModule.RCTDeviceEventEmitter
34
35
  import com.google.android.gms.common.ConnectionResult
35
36
  import com.google.android.gms.common.GoogleApiAvailability
36
37
  import java.util.ArrayList
37
-
38
+ @ReactModule(name = RNIapModule.TAG)
38
39
  class RNIapModule(
39
40
  private val reactContext: ReactApplicationContext,
40
41
  private val builder: BillingClient.Builder = BillingClient.newBuilder(reactContext).enablePendingPurchases(),
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.purchaseUpdatedListener = exports.purchaseErrorListener = exports.promotedProductListener = void 0;
7
+
8
+ var _reactNative = require("react-native");
9
+
10
+ var _iap = require("./iap");
11
+
12
+ var _internal = require("./internal");
13
+
14
+ const eventEmitter = new _reactNative.NativeEventEmitter((0, _iap.getNativeModule)());
15
+ /**
16
+ * Add IAP purchase event
17
+ */
18
+
19
+ const purchaseUpdatedListener = listener => {
20
+ const emitterSubscription = eventEmitter.addListener('purchase-updated', listener);
21
+
22
+ if (_internal.isAndroid) {
23
+ (0, _iap.getAndroidModule)().startListening();
24
+ }
25
+
26
+ return emitterSubscription;
27
+ };
28
+ /**
29
+ * Add IAP purchase error event
30
+ */
31
+
32
+
33
+ exports.purchaseUpdatedListener = purchaseUpdatedListener;
34
+
35
+ const purchaseErrorListener = listener => eventEmitter.addListener('purchase-error', listener);
36
+ /**
37
+ * Add IAP promoted subscription event
38
+ *
39
+ * @platform iOS
40
+ */
41
+
42
+
43
+ exports.purchaseErrorListener = purchaseErrorListener;
44
+
45
+ const promotedProductListener = listener => {
46
+ if (_internal.isIos) {
47
+ return new _reactNative.NativeEventEmitter((0, _iap.getIosModule)()).addListener('iap-promoted-product', listener);
48
+ }
49
+
50
+ return null;
51
+ };
52
+
53
+ exports.promotedProductListener = promotedProductListener;
54
+ //# sourceMappingURL=eventEmitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["eventEmitter","NativeEventEmitter","getNativeModule","purchaseUpdatedListener","listener","emitterSubscription","addListener","isAndroid","getAndroidModule","startListening","purchaseErrorListener","promotedProductListener","isIos","getIosModule"],"sources":["eventEmitter.ts"],"sourcesContent":["import {EmitterSubscription, NativeEventEmitter} from 'react-native';\n\nimport {getAndroidModule, getIosModule, getNativeModule} from './iap';\nimport {isAndroid, isIos} from './internal';\nimport type {PurchaseError} from './purchaseError';\nimport type {Purchase} from './types';\n\nconst eventEmitter = new NativeEventEmitter(getNativeModule());\n\n/**\n * Add IAP purchase event\n */\nexport const purchaseUpdatedListener = (\n listener: (event: Purchase) => void,\n) => {\n const emitterSubscription = eventEmitter.addListener(\n 'purchase-updated',\n listener,\n );\n\n if (isAndroid) {\n getAndroidModule().startListening();\n }\n\n return emitterSubscription;\n};\n\n/**\n * Add IAP purchase error event\n */\nexport const purchaseErrorListener = (\n listener: (error: PurchaseError) => void,\n): EmitterSubscription => eventEmitter.addListener('purchase-error', listener);\n\n/**\n * Add IAP promoted subscription event\n *\n * @platform iOS\n */\nexport const promotedProductListener = (listener: () => void) => {\n if (isIos) {\n return new NativeEventEmitter(getIosModule()).addListener(\n 'iap-promoted-product',\n listener,\n );\n }\n\n return null;\n};\n"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AAIA,MAAMA,YAAY,GAAG,IAAIC,+BAAJ,CAAuB,IAAAC,oBAAA,GAAvB,CAArB;AAEA;AACA;AACA;;AACO,MAAMC,uBAAuB,GAClCC,QADqC,IAElC;EACH,MAAMC,mBAAmB,GAAGL,YAAY,CAACM,WAAb,CAC1B,kBAD0B,EAE1BF,QAF0B,CAA5B;;EAKA,IAAIG,mBAAJ,EAAe;IACb,IAAAC,qBAAA,IAAmBC,cAAnB;EACD;;EAED,OAAOJ,mBAAP;AACD,CAbM;AAeP;AACA;AACA;;;;;AACO,MAAMK,qBAAqB,GAChCN,QADmC,IAEXJ,YAAY,CAACM,WAAb,CAAyB,gBAAzB,EAA2CF,QAA3C,CAFnB;AAIP;AACA;AACA;AACA;AACA;;;;;AACO,MAAMO,uBAAuB,GAAIP,QAAD,IAA0B;EAC/D,IAAIQ,eAAJ,EAAW;IACT,OAAO,IAAIX,+BAAJ,CAAuB,IAAAY,iBAAA,GAAvB,EAAuCP,WAAvC,CACL,sBADK,EAELF,QAFK,CAAP;EAID;;EAED,OAAO,IAAP;AACD,CATM"}
@@ -17,7 +17,7 @@ function useIAP() {
17
17
  products,
18
18
  promotedProductsIOS,
19
19
  subscriptions,
20
- purchaseHistories,
20
+ purchaseHistory,
21
21
  availablePurchases,
22
22
  currentPurchase,
23
23
  currentPurchaseError,
@@ -25,25 +25,45 @@ function useIAP() {
25
25
  setProducts,
26
26
  setSubscriptions,
27
27
  setAvailablePurchases,
28
- setPurchaseHistories,
28
+ setPurchaseHistory,
29
29
  setCurrentPurchase,
30
30
  setCurrentPurchaseError
31
31
  } = (0, _withIAPContext.useIAPContext)();
32
- const getProducts = (0, _react.useCallback)(async skus => {
33
- setProducts(await (0, _iap.getProducts)(skus));
32
+ const getProducts = (0, _react.useCallback)(async _ref => {
33
+ let {
34
+ skus
35
+ } = _ref;
36
+ setProducts(await (0, _iap.getProducts)({
37
+ skus
38
+ }));
34
39
  }, [setProducts]);
35
- const getSubscriptions = (0, _react.useCallback)(async skus => {
36
- setSubscriptions(await (0, _iap.getSubscriptions)(skus));
40
+ const getSubscriptions = (0, _react.useCallback)(async _ref2 => {
41
+ let {
42
+ skus
43
+ } = _ref2;
44
+ setSubscriptions(await (0, _iap.getSubscriptions)({
45
+ skus
46
+ }));
37
47
  }, [setSubscriptions]);
38
48
  const getAvailablePurchases = (0, _react.useCallback)(async () => {
39
49
  setAvailablePurchases(await (0, _iap.getAvailablePurchases)());
40
50
  }, [setAvailablePurchases]);
41
- const getPurchaseHistories = (0, _react.useCallback)(async () => {
42
- setPurchaseHistories(await (0, _iap.getPurchaseHistory)());
43
- }, [setPurchaseHistories]);
44
- const finishTransaction = (0, _react.useCallback)(async (purchase, isConsumable, developerPayloadAndroid) => {
51
+ const getPurchaseHistory = (0, _react.useCallback)(async () => {
52
+ setPurchaseHistory(await (0, _iap.getPurchaseHistory)());
53
+ }, [setPurchaseHistory]);
54
+ const finishTransaction = (0, _react.useCallback)(async _ref3 => {
55
+ let {
56
+ purchase,
57
+ isConsumable,
58
+ developerPayloadAndroid
59
+ } = _ref3;
60
+
45
61
  try {
46
- return await (0, _iap.finishTransaction)(purchase, isConsumable, developerPayloadAndroid);
62
+ return await (0, _iap.finishTransaction)({
63
+ purchase,
64
+ isConsumable,
65
+ developerPayloadAndroid
66
+ });
47
67
  } catch (err) {
48
68
  throw err;
49
69
  } finally {
@@ -61,7 +81,7 @@ function useIAP() {
61
81
  products,
62
82
  promotedProductsIOS,
63
83
  subscriptions,
64
- purchaseHistories,
84
+ purchaseHistory,
65
85
  availablePurchases,
66
86
  currentPurchase,
67
87
  currentPurchaseError,
@@ -70,9 +90,7 @@ function useIAP() {
70
90
  getProducts,
71
91
  getSubscriptions,
72
92
  getAvailablePurchases,
73
- getPurchaseHistories,
74
- requestPurchase: _iap.requestPurchase,
75
- requestSubscription: _iap.requestSubscription
93
+ getPurchaseHistory
76
94
  };
77
95
  }
78
96
  //# sourceMappingURL=useIAP.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useIAP","connected","products","promotedProductsIOS","subscriptions","purchaseHistories","availablePurchases","currentPurchase","currentPurchaseError","initConnectionError","setProducts","setSubscriptions","setAvailablePurchases","setPurchaseHistories","setCurrentPurchase","setCurrentPurchaseError","useIAPContext","getProducts","useCallback","skus","iapGetProducts","getSubscriptions","iapGetSubscriptions","getAvailablePurchases","iapGetAvailablePurchases","getPurchaseHistories","getPurchaseHistory","finishTransaction","purchase","isConsumable","developerPayloadAndroid","iapFinishTransaction","err","productId","undefined","requestPurchase","iapRequestPurchase","requestSubscription","iapRequestSubscription"],"sources":["useIAP.ts"],"sourcesContent":["import {useCallback} from 'react';\n\nimport {\n finishTransaction as iapFinishTransaction,\n getAvailablePurchases as iapGetAvailablePurchases,\n getProducts as iapGetProducts,\n getPurchaseHistory,\n getSubscriptions as iapGetSubscriptions,\n requestPurchase as iapRequestPurchase,\n requestSubscription as iapRequestSubscription,\n} from '../iap';\nimport type {Product, Purchase, PurchaseError, Subscription} from '../types';\n\nimport {useIAPContext} from './withIAPContext';\n\ntype IAP_STATUS = {\n connected: boolean;\n products: Product[];\n promotedProductsIOS: Product[];\n subscriptions: Subscription[];\n purchaseHistories: Purchase[];\n availablePurchases: Purchase[];\n currentPurchase?: Purchase;\n currentPurchaseError?: PurchaseError;\n initConnectionError?: Error;\n finishTransaction: (\n purchase: Purchase,\n isConsumable?: boolean,\n developerPayloadAndroid?: string,\n ) => Promise<string | void>;\n getAvailablePurchases: () => Promise<void>;\n getPurchaseHistories: () => Promise<void>;\n getProducts: (skus: string[]) => Promise<void>;\n getSubscriptions: (skus: string[]) => Promise<void>;\n requestPurchase: typeof iapRequestPurchase;\n requestSubscription: typeof iapRequestSubscription;\n};\n\nexport function useIAP(): IAP_STATUS {\n const {\n connected,\n products,\n promotedProductsIOS,\n subscriptions,\n purchaseHistories,\n availablePurchases,\n currentPurchase,\n currentPurchaseError,\n initConnectionError,\n setProducts,\n setSubscriptions,\n setAvailablePurchases,\n setPurchaseHistories,\n setCurrentPurchase,\n setCurrentPurchaseError,\n } = useIAPContext();\n\n const getProducts = useCallback(\n async (skus: string[]): Promise<void> => {\n setProducts(await iapGetProducts(skus));\n },\n [setProducts],\n );\n\n const getSubscriptions = useCallback(\n async (skus: string[]): Promise<void> => {\n setSubscriptions(await iapGetSubscriptions(skus));\n },\n [setSubscriptions],\n );\n\n const getAvailablePurchases = useCallback(async (): Promise<void> => {\n setAvailablePurchases(await iapGetAvailablePurchases());\n }, [setAvailablePurchases]);\n\n const getPurchaseHistories = useCallback(async (): Promise<void> => {\n setPurchaseHistories(await getPurchaseHistory());\n }, [setPurchaseHistories]);\n\n const finishTransaction = useCallback(\n async (\n purchase: Purchase,\n isConsumable?: boolean,\n developerPayloadAndroid?: string,\n ): Promise<string | void> => {\n try {\n return await iapFinishTransaction(\n purchase,\n isConsumable,\n developerPayloadAndroid,\n );\n } catch (err) {\n throw err;\n } finally {\n if (purchase.productId === currentPurchase?.productId) {\n setCurrentPurchase(undefined);\n }\n\n if (purchase.productId === currentPurchaseError?.productId) {\n setCurrentPurchaseError(undefined);\n }\n }\n },\n [\n currentPurchase?.productId,\n currentPurchaseError?.productId,\n setCurrentPurchase,\n setCurrentPurchaseError,\n ],\n );\n\n return {\n connected,\n products,\n promotedProductsIOS,\n subscriptions,\n purchaseHistories,\n availablePurchases,\n currentPurchase,\n currentPurchaseError,\n initConnectionError,\n finishTransaction,\n getProducts,\n getSubscriptions,\n getAvailablePurchases,\n getPurchaseHistories,\n requestPurchase: iapRequestPurchase,\n requestSubscription: iapRequestSubscription,\n };\n}\n"],"mappings":";;;;;;;AAAA;;AAEA;;AAWA;;AAyBO,SAASA,MAAT,GAA8B;EACnC,MAAM;IACJC,SADI;IAEJC,QAFI;IAGJC,mBAHI;IAIJC,aAJI;IAKJC,iBALI;IAMJC,kBANI;IAOJC,eAPI;IAQJC,oBARI;IASJC,mBATI;IAUJC,WAVI;IAWJC,gBAXI;IAYJC,qBAZI;IAaJC,oBAbI;IAcJC,kBAdI;IAeJC;EAfI,IAgBF,IAAAC,6BAAA,GAhBJ;EAkBA,MAAMC,WAAW,GAAG,IAAAC,kBAAA,EAClB,MAAOC,IAAP,IAAyC;IACvCT,WAAW,CAAC,MAAM,IAAAU,gBAAA,EAAeD,IAAf,CAAP,CAAX;EACD,CAHiB,EAIlB,CAACT,WAAD,CAJkB,CAApB;EAOA,MAAMW,gBAAgB,GAAG,IAAAH,kBAAA,EACvB,MAAOC,IAAP,IAAyC;IACvCR,gBAAgB,CAAC,MAAM,IAAAW,qBAAA,EAAoBH,IAApB,CAAP,CAAhB;EACD,CAHsB,EAIvB,CAACR,gBAAD,CAJuB,CAAzB;EAOA,MAAMY,qBAAqB,GAAG,IAAAL,kBAAA,EAAY,YAA2B;IACnEN,qBAAqB,CAAC,MAAM,IAAAY,0BAAA,GAAP,CAArB;EACD,CAF6B,EAE3B,CAACZ,qBAAD,CAF2B,CAA9B;EAIA,MAAMa,oBAAoB,GAAG,IAAAP,kBAAA,EAAY,YAA2B;IAClEL,oBAAoB,CAAC,MAAM,IAAAa,uBAAA,GAAP,CAApB;EACD,CAF4B,EAE1B,CAACb,oBAAD,CAF0B,CAA7B;EAIA,MAAMc,iBAAiB,GAAG,IAAAT,kBAAA,EACxB,OACEU,QADF,EAEEC,YAFF,EAGEC,uBAHF,KAI6B;IAC3B,IAAI;MACF,OAAO,MAAM,IAAAC,sBAAA,EACXH,QADW,EAEXC,YAFW,EAGXC,uBAHW,CAAb;IAKD,CAND,CAME,OAAOE,GAAP,EAAY;MACZ,MAAMA,GAAN;IACD,CARD,SAQU;MACR,IAAIJ,QAAQ,CAACK,SAAT,MAAuB1B,eAAvB,aAAuBA,eAAvB,uBAAuBA,eAAe,CAAE0B,SAAxC,CAAJ,EAAuD;QACrDnB,kBAAkB,CAACoB,SAAD,CAAlB;MACD;;MAED,IAAIN,QAAQ,CAACK,SAAT,MAAuBzB,oBAAvB,aAAuBA,oBAAvB,uBAAuBA,oBAAoB,CAAEyB,SAA7C,CAAJ,EAA4D;QAC1DlB,uBAAuB,CAACmB,SAAD,CAAvB;MACD;IACF;EACF,CAvBuB,EAwBxB,CACE3B,eADF,aACEA,eADF,uBACEA,eAAe,CAAE0B,SADnB,EAEEzB,oBAFF,aAEEA,oBAFF,uBAEEA,oBAAoB,CAAEyB,SAFxB,EAGEnB,kBAHF,EAIEC,uBAJF,CAxBwB,CAA1B;EAgCA,OAAO;IACLd,SADK;IAELC,QAFK;IAGLC,mBAHK;IAILC,aAJK;IAKLC,iBALK;IAMLC,kBANK;IAOLC,eAPK;IAQLC,oBARK;IASLC,mBATK;IAULkB,iBAVK;IAWLV,WAXK;IAYLI,gBAZK;IAaLE,qBAbK;IAcLE,oBAdK;IAeLU,eAAe,EAAEC,oBAfZ;IAgBLC,mBAAmB,EAAEC;EAhBhB,CAAP;AAkBD"}
1
+ {"version":3,"names":["useIAP","connected","products","promotedProductsIOS","subscriptions","purchaseHistory","availablePurchases","currentPurchase","currentPurchaseError","initConnectionError","setProducts","setSubscriptions","setAvailablePurchases","setPurchaseHistory","setCurrentPurchase","setCurrentPurchaseError","useIAPContext","getProducts","useCallback","skus","iapGetProducts","getSubscriptions","iapGetSubscriptions","getAvailablePurchases","iapGetAvailablePurchases","getPurchaseHistory","iapGetPurchaseHistory","finishTransaction","purchase","isConsumable","developerPayloadAndroid","iapFinishTransaction","err","productId","undefined"],"sources":["useIAP.ts"],"sourcesContent":["import {useCallback} from 'react';\n\nimport {\n finishTransaction as iapFinishTransaction,\n getAvailablePurchases as iapGetAvailablePurchases,\n getProducts as iapGetProducts,\n getPurchaseHistory as iapGetPurchaseHistory,\n getSubscriptions as iapGetSubscriptions,\n} from '../iap';\nimport type {PurchaseError} from '../purchaseError';\nimport type {Product, Purchase, Subscription} from '../types';\n\nimport {useIAPContext} from './withIAPContext';\n\ntype IAP_STATUS = {\n connected: boolean;\n products: Product[];\n promotedProductsIOS: Product[];\n subscriptions: Subscription[];\n purchaseHistory: Purchase[];\n availablePurchases: Purchase[];\n currentPurchase?: Purchase;\n currentPurchaseError?: PurchaseError;\n initConnectionError?: Error;\n finishTransaction: ({\n purchase,\n isConsumable,\n developerPayloadAndroid,\n }: {\n purchase: Purchase;\n isConsumable?: boolean;\n developerPayloadAndroid?: string;\n }) => Promise<string | void>;\n getAvailablePurchases: () => Promise<void>;\n getPurchaseHistory: () => Promise<void>;\n getProducts: ({skus}: {skus: string[]}) => Promise<void>;\n getSubscriptions: ({skus}: {skus: string[]}) => Promise<void>;\n};\n\nexport function useIAP(): IAP_STATUS {\n const {\n connected,\n products,\n promotedProductsIOS,\n subscriptions,\n purchaseHistory,\n availablePurchases,\n currentPurchase,\n currentPurchaseError,\n initConnectionError,\n setProducts,\n setSubscriptions,\n setAvailablePurchases,\n setPurchaseHistory,\n setCurrentPurchase,\n setCurrentPurchaseError,\n } = useIAPContext();\n\n const getProducts = useCallback(\n async ({skus}: {skus: string[]}): Promise<void> => {\n setProducts(await iapGetProducts({skus}));\n },\n [setProducts],\n );\n\n const getSubscriptions = useCallback(\n async ({skus}: {skus: string[]}): Promise<void> => {\n setSubscriptions(await iapGetSubscriptions({skus}));\n },\n [setSubscriptions],\n );\n\n const getAvailablePurchases = useCallback(async (): Promise<void> => {\n setAvailablePurchases(await iapGetAvailablePurchases());\n }, [setAvailablePurchases]);\n\n const getPurchaseHistory = useCallback(async (): Promise<void> => {\n setPurchaseHistory(await iapGetPurchaseHistory());\n }, [setPurchaseHistory]);\n\n const finishTransaction = useCallback(\n async ({\n purchase,\n isConsumable,\n developerPayloadAndroid,\n }: {\n purchase: Purchase;\n isConsumable?: boolean;\n developerPayloadAndroid?: string;\n }): Promise<string | void> => {\n try {\n return await iapFinishTransaction({\n purchase,\n isConsumable,\n developerPayloadAndroid,\n });\n } catch (err) {\n throw err;\n } finally {\n if (purchase.productId === currentPurchase?.productId) {\n setCurrentPurchase(undefined);\n }\n\n if (purchase.productId === currentPurchaseError?.productId) {\n setCurrentPurchaseError(undefined);\n }\n }\n },\n [\n currentPurchase?.productId,\n currentPurchaseError?.productId,\n setCurrentPurchase,\n setCurrentPurchaseError,\n ],\n );\n\n return {\n connected,\n products,\n promotedProductsIOS,\n subscriptions,\n purchaseHistory,\n availablePurchases,\n currentPurchase,\n currentPurchaseError,\n initConnectionError,\n finishTransaction,\n getProducts,\n getSubscriptions,\n getAvailablePurchases,\n getPurchaseHistory,\n };\n}\n"],"mappings":";;;;;;;AAAA;;AAEA;;AAUA;;AA2BO,SAASA,MAAT,GAA8B;EACnC,MAAM;IACJC,SADI;IAEJC,QAFI;IAGJC,mBAHI;IAIJC,aAJI;IAKJC,eALI;IAMJC,kBANI;IAOJC,eAPI;IAQJC,oBARI;IASJC,mBATI;IAUJC,WAVI;IAWJC,gBAXI;IAYJC,qBAZI;IAaJC,kBAbI;IAcJC,kBAdI;IAeJC;EAfI,IAgBF,IAAAC,6BAAA,GAhBJ;EAkBA,MAAMC,WAAW,GAAG,IAAAC,kBAAA,EAClB,cAAmD;IAAA,IAA5C;MAACC;IAAD,CAA4C;IACjDT,WAAW,CAAC,MAAM,IAAAU,gBAAA,EAAe;MAACD;IAAD,CAAf,CAAP,CAAX;EACD,CAHiB,EAIlB,CAACT,WAAD,CAJkB,CAApB;EAOA,MAAMW,gBAAgB,GAAG,IAAAH,kBAAA,EACvB,eAAmD;IAAA,IAA5C;MAACC;IAAD,CAA4C;IACjDR,gBAAgB,CAAC,MAAM,IAAAW,qBAAA,EAAoB;MAACH;IAAD,CAApB,CAAP,CAAhB;EACD,CAHsB,EAIvB,CAACR,gBAAD,CAJuB,CAAzB;EAOA,MAAMY,qBAAqB,GAAG,IAAAL,kBAAA,EAAY,YAA2B;IACnEN,qBAAqB,CAAC,MAAM,IAAAY,0BAAA,GAAP,CAArB;EACD,CAF6B,EAE3B,CAACZ,qBAAD,CAF2B,CAA9B;EAIA,MAAMa,kBAAkB,GAAG,IAAAP,kBAAA,EAAY,YAA2B;IAChEL,kBAAkB,CAAC,MAAM,IAAAa,uBAAA,GAAP,CAAlB;EACD,CAF0B,EAExB,CAACb,kBAAD,CAFwB,CAA3B;EAIA,MAAMc,iBAAiB,GAAG,IAAAT,kBAAA,EACxB,eAQ8B;IAAA,IARvB;MACLU,QADK;MAELC,YAFK;MAGLC;IAHK,CAQuB;;IAC5B,IAAI;MACF,OAAO,MAAM,IAAAC,sBAAA,EAAqB;QAChCH,QADgC;QAEhCC,YAFgC;QAGhCC;MAHgC,CAArB,CAAb;IAKD,CAND,CAME,OAAOE,GAAP,EAAY;MACZ,MAAMA,GAAN;IACD,CARD,SAQU;MACR,IAAIJ,QAAQ,CAACK,SAAT,MAAuB1B,eAAvB,aAAuBA,eAAvB,uBAAuBA,eAAe,CAAE0B,SAAxC,CAAJ,EAAuD;QACrDnB,kBAAkB,CAACoB,SAAD,CAAlB;MACD;;MAED,IAAIN,QAAQ,CAACK,SAAT,MAAuBzB,oBAAvB,aAAuBA,oBAAvB,uBAAuBA,oBAAoB,CAAEyB,SAA7C,CAAJ,EAA4D;QAC1DlB,uBAAuB,CAACmB,SAAD,CAAvB;MACD;IACF;EACF,CA3BuB,EA4BxB,CACE3B,eADF,aACEA,eADF,uBACEA,eAAe,CAAE0B,SADnB,EAEEzB,oBAFF,aAEEA,oBAFF,uBAEEA,oBAAoB,CAAEyB,SAFxB,EAGEnB,kBAHF,EAIEC,uBAJF,CA5BwB,CAA1B;EAoCA,OAAO;IACLd,SADK;IAELC,QAFK;IAGLC,mBAHK;IAILC,aAJK;IAKLC,eALK;IAMLC,kBANK;IAOLC,eAPK;IAQLC,oBARK;IASLC,mBATK;IAULkB,iBAVK;IAWLV,WAXK;IAYLI,gBAZK;IAaLE,qBAbK;IAcLE;EAdK,CAAP;AAgBD"}
@@ -8,6 +8,8 @@ exports.withIAPContext = withIAPContext;
8
8
 
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
 
11
+ var _eventEmitter = require("../eventEmitter");
12
+
11
13
  var _iap = require("../iap");
12
14
 
13
15
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -33,7 +35,7 @@ function withIAPContext(Component) {
33
35
  const [products, setProducts] = (0, _react.useState)([]);
34
36
  const [promotedProductsIOS, setPromotedProductsIOS] = (0, _react.useState)([]);
35
37
  const [subscriptions, setSubscriptions] = (0, _react.useState)([]);
36
- const [purchaseHistories, setPurchaseHistories] = (0, _react.useState)([]);
38
+ const [purchaseHistory, setPurchaseHistory] = (0, _react.useState)([]);
37
39
  const [availablePurchases, setAvailablePurchases] = (0, _react.useState)([]);
38
40
  const [currentPurchase, setCurrentPurchase] = (0, _react.useState)();
39
41
  const [currentPurchaseError, setCurrentPurchaseError] = (0, _react.useState)();
@@ -43,18 +45,18 @@ function withIAPContext(Component) {
43
45
  products,
44
46
  subscriptions,
45
47
  promotedProductsIOS,
46
- purchaseHistories,
48
+ purchaseHistory,
47
49
  availablePurchases,
48
50
  currentPurchase,
49
51
  currentPurchaseError,
50
52
  initConnectionError,
51
53
  setProducts,
52
54
  setSubscriptions,
53
- setPurchaseHistories,
55
+ setPurchaseHistory,
54
56
  setAvailablePurchases,
55
57
  setCurrentPurchase,
56
58
  setCurrentPurchaseError
57
- }), [connected, products, subscriptions, promotedProductsIOS, purchaseHistories, availablePurchases, currentPurchase, currentPurchaseError, initConnectionError, setProducts, setSubscriptions, setPurchaseHistories, setAvailablePurchases, setCurrentPurchase, setCurrentPurchaseError]);
59
+ }), [connected, products, subscriptions, promotedProductsIOS, purchaseHistory, availablePurchases, currentPurchase, currentPurchaseError, initConnectionError, setProducts, setSubscriptions, setPurchaseHistory, setAvailablePurchases, setCurrentPurchase, setCurrentPurchaseError]);
58
60
  (0, _react.useEffect)(() => {
59
61
  (0, _iap.initConnection)().then(value => {
60
62
  setInitConnectionError(undefined);
@@ -66,15 +68,15 @@ function withIAPContext(Component) {
66
68
  return;
67
69
  }
68
70
 
69
- const purchaseUpdateSubscription = (0, _iap.purchaseUpdatedListener)(async purchase => {
71
+ const purchaseUpdateSubscription = (0, _eventEmitter.purchaseUpdatedListener)(async purchase => {
70
72
  setCurrentPurchaseError(undefined);
71
73
  setCurrentPurchase(purchase);
72
74
  });
73
- const purchaseErrorSubscription = (0, _iap.purchaseErrorListener)(error => {
75
+ const purchaseErrorSubscription = (0, _eventEmitter.purchaseErrorListener)(error => {
74
76
  setCurrentPurchase(undefined);
75
77
  setCurrentPurchaseError(error);
76
78
  });
77
- const promotedProductSubscription = (0, _iap.promotedProductListener)(async () => {
79
+ const promotedProductSubscription = (0, _eventEmitter.promotedProductListener)(async () => {
78
80
  const product = await (0, _iap.getPromotedProductIOS)();
79
81
  setPromotedProductsIOS(prevProducts => [...prevProducts, ...(product ? [product] : [])]);
80
82
  });
@@ -1 +1 @@
1
- {"version":3,"names":["IAPContext","React","createContext","useIAPContext","ctx","useContext","Error","withIAPContext","Component","WrapperComponent","props","connected","setConnected","useState","products","setProducts","promotedProductsIOS","setPromotedProductsIOS","subscriptions","setSubscriptions","purchaseHistories","setPurchaseHistories","availablePurchases","setAvailablePurchases","currentPurchase","setCurrentPurchase","currentPurchaseError","setCurrentPurchaseError","initConnectionError","setInitConnectionError","context","useMemo","useEffect","initConnection","then","value","undefined","catch","purchaseUpdateSubscription","purchaseUpdatedListener","purchase","purchaseErrorSubscription","purchaseErrorListener","error","promotedProductSubscription","promotedProductListener","product","getPromotedProductIOS","prevProducts","remove"],"sources":["withIAPContext.tsx"],"sourcesContent":["import React, {useContext, useEffect, useMemo, useState} from 'react';\n\nimport {\n getPromotedProductIOS,\n initConnection,\n promotedProductListener,\n purchaseErrorListener,\n purchaseUpdatedListener,\n} from '../iap';\nimport type {\n InAppPurchase,\n Product,\n Purchase,\n PurchaseError,\n Subscription,\n SubscriptionPurchase,\n} from '../types';\n\ntype IAPContextType = {\n connected: boolean;\n products: Product[];\n promotedProductsIOS: Product[];\n subscriptions: Subscription[];\n purchaseHistories: Purchase[];\n availablePurchases: Purchase[];\n currentPurchase?: Purchase;\n currentPurchaseError?: PurchaseError;\n initConnectionError?: Error;\n setProducts: (products: Product[]) => void;\n setSubscriptions: (subscriptions: Subscription[]) => void;\n setPurchaseHistories: (purchaseHistories: Purchase[]) => void;\n setAvailablePurchases: (availablePurchases: Purchase[]) => void;\n setCurrentPurchase: (currentPurchase: Purchase | undefined) => void;\n setCurrentPurchaseError: (\n currentPurchaseError: PurchaseError | undefined,\n ) => void;\n};\n\n// @ts-ignore\nconst IAPContext = React.createContext<IAPContextType>(null);\n\nexport function useIAPContext(): IAPContextType {\n const ctx = useContext(IAPContext);\n\n if (!ctx) {\n throw new Error('You need wrap your app with withIAPContext HOC');\n }\n\n return ctx;\n}\n\nexport function withIAPContext<T>(Component: React.ComponentType<T>) {\n return function WrapperComponent(props: T) {\n const [connected, setConnected] = useState(false);\n const [products, setProducts] = useState<Product[]>([]);\n\n const [promotedProductsIOS, setPromotedProductsIOS] = useState<Product[]>(\n [],\n );\n const [subscriptions, setSubscriptions] = useState<Subscription[]>([]);\n const [purchaseHistories, setPurchaseHistories] = useState<Purchase[]>([]);\n\n const [availablePurchases, setAvailablePurchases] = useState<Purchase[]>(\n [],\n );\n const [currentPurchase, setCurrentPurchase] = useState<Purchase>();\n\n const [currentPurchaseError, setCurrentPurchaseError] =\n useState<PurchaseError>();\n\n const [initConnectionError, setInitConnectionError] = useState<Error>();\n\n const context = useMemo(\n () => ({\n connected,\n products,\n subscriptions,\n promotedProductsIOS,\n purchaseHistories,\n availablePurchases,\n currentPurchase,\n currentPurchaseError,\n initConnectionError,\n setProducts,\n setSubscriptions,\n setPurchaseHistories,\n setAvailablePurchases,\n setCurrentPurchase,\n setCurrentPurchaseError,\n }),\n [\n connected,\n products,\n subscriptions,\n promotedProductsIOS,\n purchaseHistories,\n availablePurchases,\n currentPurchase,\n currentPurchaseError,\n initConnectionError,\n setProducts,\n setSubscriptions,\n setPurchaseHistories,\n setAvailablePurchases,\n setCurrentPurchase,\n setCurrentPurchaseError,\n ],\n );\n\n useEffect(() => {\n initConnection()\n .then((value) => {\n setInitConnectionError(undefined);\n setConnected(value);\n })\n .catch(setInitConnectionError);\n }, []);\n\n useEffect(() => {\n if (!connected) {\n return;\n }\n\n const purchaseUpdateSubscription = purchaseUpdatedListener(\n async (purchase: InAppPurchase | SubscriptionPurchase) => {\n setCurrentPurchaseError(undefined);\n setCurrentPurchase(purchase);\n },\n );\n\n const purchaseErrorSubscription = purchaseErrorListener(\n (error: PurchaseError) => {\n setCurrentPurchase(undefined);\n setCurrentPurchaseError(error);\n },\n );\n\n const promotedProductSubscription = promotedProductListener(async () => {\n const product = await getPromotedProductIOS();\n\n setPromotedProductsIOS((prevProducts) => [\n ...prevProducts,\n ...(product ? [product] : []),\n ]);\n });\n\n return () => {\n purchaseUpdateSubscription.remove();\n purchaseErrorSubscription.remove();\n promotedProductSubscription?.remove();\n };\n }, [connected]);\n\n return (\n <IAPContext.Provider value={context}>\n <Component {...props} />\n </IAPContext.Provider>\n );\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["IAPContext","React","createContext","useIAPContext","ctx","useContext","Error","withIAPContext","Component","WrapperComponent","props","connected","setConnected","useState","products","setProducts","promotedProductsIOS","setPromotedProductsIOS","subscriptions","setSubscriptions","purchaseHistory","setPurchaseHistory","availablePurchases","setAvailablePurchases","currentPurchase","setCurrentPurchase","currentPurchaseError","setCurrentPurchaseError","initConnectionError","setInitConnectionError","context","useMemo","useEffect","initConnection","then","value","undefined","catch","purchaseUpdateSubscription","purchaseUpdatedListener","purchase","purchaseErrorSubscription","purchaseErrorListener","error","promotedProductSubscription","promotedProductListener","product","getPromotedProductIOS","prevProducts","remove"],"sources":["withIAPContext.tsx"],"sourcesContent":["import React, {useContext, useEffect, useMemo, useState} from 'react';\n\nimport {\n promotedProductListener,\n purchaseErrorListener,\n purchaseUpdatedListener,\n} from '../eventEmitter';\nimport {getPromotedProductIOS, initConnection} from '../iap';\nimport type {PurchaseError} from '../purchaseError';\nimport type {\n Product,\n ProductPurchase,\n Purchase,\n Subscription,\n SubscriptionPurchase,\n} from '../types';\n\ntype IAPContextType = {\n connected: boolean;\n products: Product[];\n promotedProductsIOS: Product[];\n subscriptions: Subscription[];\n purchaseHistory: Purchase[];\n availablePurchases: Purchase[];\n currentPurchase?: Purchase;\n currentPurchaseError?: PurchaseError;\n initConnectionError?: Error;\n setProducts: (products: Product[]) => void;\n setSubscriptions: (subscriptions: Subscription[]) => void;\n setPurchaseHistory: (purchaseHistory: Purchase[]) => void;\n setAvailablePurchases: (availablePurchases: Purchase[]) => void;\n setCurrentPurchase: (currentPurchase: Purchase | undefined) => void;\n setCurrentPurchaseError: (\n currentPurchaseError: PurchaseError | undefined,\n ) => void;\n};\n\n// @ts-ignore\nconst IAPContext = React.createContext<IAPContextType>(null);\n\nexport function useIAPContext(): IAPContextType {\n const ctx = useContext(IAPContext);\n\n if (!ctx) {\n throw new Error('You need wrap your app with withIAPContext HOC');\n }\n\n return ctx;\n}\n\nexport function withIAPContext<T>(Component: React.ComponentType<T>) {\n return function WrapperComponent(props: T) {\n const [connected, setConnected] = useState(false);\n const [products, setProducts] = useState<Product[]>([]);\n\n const [promotedProductsIOS, setPromotedProductsIOS] = useState<Product[]>(\n [],\n );\n const [subscriptions, setSubscriptions] = useState<Subscription[]>([]);\n const [purchaseHistory, setPurchaseHistory] = useState<Purchase[]>([]);\n\n const [availablePurchases, setAvailablePurchases] = useState<Purchase[]>(\n [],\n );\n const [currentPurchase, setCurrentPurchase] = useState<Purchase>();\n\n const [currentPurchaseError, setCurrentPurchaseError] =\n useState<PurchaseError>();\n\n const [initConnectionError, setInitConnectionError] = useState<Error>();\n\n const context = useMemo(\n () => ({\n connected,\n products,\n subscriptions,\n promotedProductsIOS,\n purchaseHistory,\n availablePurchases,\n currentPurchase,\n currentPurchaseError,\n initConnectionError,\n setProducts,\n setSubscriptions,\n setPurchaseHistory,\n setAvailablePurchases,\n setCurrentPurchase,\n setCurrentPurchaseError,\n }),\n [\n connected,\n products,\n subscriptions,\n promotedProductsIOS,\n purchaseHistory,\n availablePurchases,\n currentPurchase,\n currentPurchaseError,\n initConnectionError,\n setProducts,\n setSubscriptions,\n setPurchaseHistory,\n setAvailablePurchases,\n setCurrentPurchase,\n setCurrentPurchaseError,\n ],\n );\n\n useEffect(() => {\n initConnection()\n .then((value) => {\n setInitConnectionError(undefined);\n setConnected(value);\n })\n .catch(setInitConnectionError);\n }, []);\n\n useEffect(() => {\n if (!connected) {\n return;\n }\n\n const purchaseUpdateSubscription = purchaseUpdatedListener(\n async (purchase: ProductPurchase | SubscriptionPurchase) => {\n setCurrentPurchaseError(undefined);\n setCurrentPurchase(purchase);\n },\n );\n\n const purchaseErrorSubscription = purchaseErrorListener(\n (error: PurchaseError) => {\n setCurrentPurchase(undefined);\n setCurrentPurchaseError(error);\n },\n );\n\n const promotedProductSubscription = promotedProductListener(async () => {\n const product = await getPromotedProductIOS();\n\n setPromotedProductsIOS((prevProducts) => [\n ...prevProducts,\n ...(product ? [product] : []),\n ]);\n });\n\n return () => {\n purchaseUpdateSubscription.remove();\n purchaseErrorSubscription.remove();\n promotedProductSubscription?.remove();\n };\n }, [connected]);\n\n return (\n <IAPContext.Provider value={context}>\n <Component {...props} />\n </IAPContext.Provider>\n );\n };\n}\n"],"mappings":"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"}