react-native-iap 9.0.2 → 10.0.0

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 (68) hide show
  1. package/android/src/amazon/java/com/dooboolab/RNIap/RNIapAmazonModule.kt +6 -2
  2. package/lib/commonjs/eventEmitter.js +54 -0
  3. package/lib/commonjs/eventEmitter.js.map +1 -0
  4. package/lib/commonjs/hooks/useIAP.js +33 -15
  5. package/lib/commonjs/hooks/useIAP.js.map +1 -1
  6. package/lib/commonjs/hooks/withIAPContext.js +9 -7
  7. package/lib/commonjs/hooks/withIAPContext.js.map +1 -1
  8. package/lib/commonjs/iap.js +131 -197
  9. package/lib/commonjs/iap.js.map +1 -1
  10. package/lib/commonjs/index.js +28 -15
  11. package/lib/commonjs/index.js.map +1 -1
  12. package/lib/commonjs/internal/enhancedFetch.js +30 -0
  13. package/lib/commonjs/internal/enhancedFetch.js.map +1 -0
  14. package/lib/commonjs/internal/fillProductsWithAdditionalData.js +47 -0
  15. package/lib/commonjs/internal/fillProductsWithAdditionalData.js.map +1 -0
  16. package/lib/commonjs/internal/index.js +45 -0
  17. package/lib/commonjs/internal/index.js.map +1 -0
  18. package/lib/commonjs/internal/platform.js +19 -0
  19. package/lib/commonjs/internal/platform.js.map +1 -0
  20. package/lib/commonjs/purchaseError.js +47 -0
  21. package/lib/commonjs/purchaseError.js.map +1 -0
  22. package/lib/commonjs/types/index.js +1 -23
  23. package/lib/commonjs/types/index.js.map +1 -1
  24. package/lib/module/eventEmitter.js +36 -0
  25. package/lib/module/eventEmitter.js.map +1 -0
  26. package/lib/module/hooks/useIAP.js +34 -16
  27. package/lib/module/hooks/useIAP.js.map +1 -1
  28. package/lib/module/hooks/withIAPContext.js +6 -5
  29. package/lib/module/hooks/withIAPContext.js.map +1 -1
  30. package/lib/module/iap.js +123 -186
  31. package/lib/module/iap.js.map +1 -1
  32. package/lib/module/index.js +2 -2
  33. package/lib/module/index.js.map +1 -1
  34. package/lib/module/internal/enhancedFetch.js +21 -0
  35. package/lib/module/internal/enhancedFetch.js.map +1 -0
  36. package/lib/module/internal/fillProductsWithAdditionalData.js +37 -0
  37. package/lib/module/internal/fillProductsWithAdditionalData.js.map +1 -0
  38. package/lib/module/internal/index.js +4 -0
  39. package/lib/module/internal/index.js.map +1 -0
  40. package/lib/module/internal/platform.js +8 -0
  41. package/lib/module/internal/platform.js.map +1 -0
  42. package/lib/module/purchaseError.js +38 -0
  43. package/lib/module/purchaseError.js.map +1 -0
  44. package/lib/module/types/index.js +0 -21
  45. package/lib/module/types/index.js.map +1 -1
  46. package/lib/typescript/eventEmitter.d.ts +17 -0
  47. package/lib/typescript/hooks/useIAP.d.ts +15 -9
  48. package/lib/typescript/hooks/withIAPContext.d.ts +4 -3
  49. package/lib/typescript/iap.d.ts +80 -41
  50. package/lib/typescript/index.d.ts +2 -2
  51. package/lib/typescript/internal/enhancedFetch.d.ts +6 -0
  52. package/lib/typescript/internal/fillProductsWithAdditionalData.d.ts +5 -0
  53. package/lib/typescript/internal/index.d.ts +3 -0
  54. package/lib/typescript/internal/platform.d.ts +3 -0
  55. package/lib/typescript/purchaseError.d.ts +26 -0
  56. package/lib/typescript/types/index.d.ts +1 -48
  57. package/package.json +1 -1
  58. package/src/eventEmitter.ts +49 -0
  59. package/src/hooks/useIAP.ts +38 -35
  60. package/src/hooks/withIAPContext.tsx +12 -13
  61. package/src/iap.ts +165 -242
  62. package/src/index.ts +2 -4
  63. package/src/internal/enhancedFetch.ts +25 -0
  64. package/src/internal/fillProductsWithAdditionalData.ts +43 -0
  65. package/src/internal/index.ts +3 -0
  66. package/src/internal/platform.ts +7 -0
  67. package/src/purchaseError.ts +35 -0
  68. package/src/types/index.ts +1 -59
@@ -13,6 +13,7 @@ import java.util.HashSet
13
13
 
14
14
  class RNIapAmazonModule(reactContext: ReactApplicationContext) :
15
15
  ReactContextBaseJavaModule(reactContext) {
16
+ var hasListener = false
16
17
  override fun getName(): String {
17
18
  return TAG
18
19
  }
@@ -21,6 +22,7 @@ class RNIapAmazonModule(reactContext: ReactApplicationContext) :
21
22
  fun initConnection(promise: Promise) {
22
23
  val context = reactApplicationContext
23
24
  PurchasingService.registerListener(context, RNIapAmazonListener(context))
25
+ hasListener = true
24
26
  // Prefetch user and purchases as per Amazon SDK documentation:
25
27
  PurchasingService.getUserData()
26
28
  PurchasingService.getPurchaseUpdates(false)
@@ -132,8 +134,10 @@ class RNIapAmazonModule(reactContext: ReactApplicationContext) :
132
134
  * We should fetch updates on resume
133
135
  */
134
136
  override fun onHostResume() {
135
- PurchasingService.getUserData()
136
- PurchasingService.getPurchaseUpdates(false)
137
+ if (hasListener) {
138
+ PurchasingService.getUserData()
139
+ PurchasingService.getPurchaseUpdates(false)
140
+ }
137
141
  }
138
142
  override fun onHostPause() {}
139
143
  override fun onHostDestroy() {
@@ -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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"}