@tryheliumai/paywall-sdk-react-native 0.1.26 → 0.1.28

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 (37) hide show
  1. package/lib/commonjs/handlers/revenuecat.js +146 -0
  2. package/lib/commonjs/handlers/revenuecat.js.map +1 -0
  3. package/lib/commonjs/index.js +14 -0
  4. package/lib/commonjs/index.js.map +1 -1
  5. package/lib/commonjs/native-interface.js +33 -15
  6. package/lib/commonjs/native-interface.js.map +1 -1
  7. package/lib/commonjs/types.js +27 -0
  8. package/lib/commonjs/types.js.map +1 -1
  9. package/lib/module/handlers/revenuecat.js +138 -0
  10. package/lib/module/handlers/revenuecat.js.map +1 -0
  11. package/lib/module/index.js +2 -0
  12. package/lib/module/index.js.map +1 -1
  13. package/lib/module/native-interface.js +33 -15
  14. package/lib/module/native-interface.js.map +1 -1
  15. package/lib/module/types.js +23 -0
  16. package/lib/module/types.js.map +1 -1
  17. package/lib/typescript/commonjs/src/handlers/revenuecat.d.ts +16 -0
  18. package/lib/typescript/commonjs/src/handlers/revenuecat.d.ts.map +1 -0
  19. package/lib/typescript/commonjs/src/index.d.ts +3 -1
  20. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  21. package/lib/typescript/commonjs/src/native-interface.d.ts +2 -2
  22. package/lib/typescript/commonjs/src/native-interface.d.ts.map +1 -1
  23. package/lib/typescript/commonjs/src/types.d.ts +22 -3
  24. package/lib/typescript/commonjs/src/types.d.ts.map +1 -1
  25. package/lib/typescript/module/src/handlers/revenuecat.d.ts +16 -0
  26. package/lib/typescript/module/src/handlers/revenuecat.d.ts.map +1 -0
  27. package/lib/typescript/module/src/index.d.ts +3 -1
  28. package/lib/typescript/module/src/index.d.ts.map +1 -1
  29. package/lib/typescript/module/src/native-interface.d.ts +2 -2
  30. package/lib/typescript/module/src/native-interface.d.ts.map +1 -1
  31. package/lib/typescript/module/src/types.d.ts +22 -3
  32. package/lib/typescript/module/src/types.d.ts.map +1 -1
  33. package/package.json +4 -2
  34. package/src/handlers/revenuecat.ts +132 -0
  35. package/src/index.ts +3 -1
  36. package/src/native-interface.tsx +41 -18
  37. package/src/types.ts +42 -4
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.RevenueCatConfig = RevenueCatConfig;
7
+ exports.RevenueCatHeliumHandler = void 0;
8
+ var _reactNativePurchases = _interopRequireWildcard(require("react-native-purchases"));
9
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
10
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
11
+ // Rename the factory function
12
+ function RevenueCatConfig(config) {
13
+ return {
14
+ type: 'revenuecat',
15
+ apiKey: config?.apiKey
16
+ };
17
+ }
18
+ class RevenueCatHeliumHandler {
19
+ productIdToPackageMapping = {};
20
+ isMappingInitialized = false;
21
+ initializationPromise = null;
22
+ constructor(apiKey) {
23
+ if (apiKey) {
24
+ _reactNativePurchases.default.configure({
25
+ apiKey
26
+ });
27
+ } else {}
28
+ this.initializePackageMapping();
29
+ }
30
+ async initializePackageMapping() {
31
+ if (this.initializationPromise) {
32
+ return this.initializationPromise;
33
+ }
34
+ this.initializationPromise = (async () => {
35
+ try {
36
+ const offerings = await _reactNativePurchases.default.getOfferings();
37
+ if (offerings.current?.availablePackages) {
38
+ offerings.current.availablePackages.forEach(pkg => {
39
+ if (pkg.product?.identifier) {
40
+ this.productIdToPackageMapping[pkg.product.identifier] = pkg;
41
+ }
42
+ });
43
+ } else {}
44
+ this.isMappingInitialized = true;
45
+ } catch (error) {
46
+ this.isMappingInitialized = false;
47
+ } finally {
48
+ this.initializationPromise = null;
49
+ }
50
+ })();
51
+ return this.initializationPromise;
52
+ }
53
+ async ensureMappingInitialized() {
54
+ if (!this.isMappingInitialized && !this.initializationPromise) {
55
+ await this.initializePackageMapping();
56
+ } else if (this.initializationPromise) {
57
+ await this.initializationPromise;
58
+ }
59
+ }
60
+ async makePurchase(productId) {
61
+ await this.ensureMappingInitialized();
62
+ const pkg = this.productIdToPackageMapping[productId];
63
+ if (!pkg) {
64
+ return {
65
+ status: 'failed',
66
+ error: `RevenueCat Package not found for ID: ${productId}`
67
+ };
68
+ }
69
+ try {
70
+ const {
71
+ customerInfo
72
+ } = await _reactNativePurchases.default.purchasePackage(pkg);
73
+ const isActive = this.isProductActive(customerInfo, productId);
74
+ if (isActive) {
75
+ return {
76
+ status: 'purchased'
77
+ };
78
+ } else {
79
+ // This case might occur if the purchase succeeded but the entitlement wasn't immediately active
80
+ // or if a different product became active.
81
+ // Consider if polling/listening might be needed here too, similar to pending.
82
+ // For now, returning failed as the specific product isn't confirmed active.
83
+ return {
84
+ status: 'failed',
85
+ error: 'Purchase possibly complete but entitlement/subscription not active for this product.'
86
+ };
87
+ }
88
+ } catch (error) {
89
+ const purchasesError = error;
90
+ if (purchasesError?.code === _reactNativePurchases.PURCHASES_ERROR_CODE.PAYMENT_PENDING_ERROR) {
91
+ // Wait for a terminal state for up to 5 seconds
92
+ return new Promise(resolve => {
93
+ // Define the listener function separately to remove it later
94
+ const updateListener = updatedCustomerInfo => {
95
+ const isActive = this.isProductActive(updatedCustomerInfo, productId);
96
+ if (isActive) {
97
+ clearTimeout(timeoutId);
98
+ // Remove listener using the function reference
99
+ _reactNativePurchases.default.removeCustomerInfoUpdateListener(updateListener);
100
+ resolve({
101
+ status: 'purchased'
102
+ });
103
+ }
104
+ };
105
+ const timeoutId = setTimeout(() => {
106
+ // Remove listener using the function reference on timeout
107
+ _reactNativePurchases.default.removeCustomerInfoUpdateListener(updateListener);
108
+ resolve({
109
+ status: 'pending'
110
+ });
111
+ }, 5000);
112
+
113
+ // Add the listener
114
+ _reactNativePurchases.default.addCustomerInfoUpdateListener(updateListener);
115
+ });
116
+ }
117
+ if (purchasesError?.code === _reactNativePurchases.PURCHASES_ERROR_CODE.PURCHASE_CANCELLED_ERROR) {
118
+ return {
119
+ status: 'cancelled'
120
+ };
121
+ }
122
+
123
+ // Handle other errors
124
+ return {
125
+ status: 'failed',
126
+ error: purchasesError?.message || 'RevenueCat purchase failed.'
127
+ };
128
+ }
129
+ }
130
+
131
+ // Helper function to check if a product is active in CustomerInfo
132
+ isProductActive(customerInfo, productId) {
133
+ return Object.values(customerInfo.entitlements.active).some(entitlement => entitlement.productIdentifier === productId) || customerInfo.activeSubscriptions.includes(productId) || customerInfo.allPurchasedProductIdentifiers.includes(productId);
134
+ }
135
+ async restorePurchases() {
136
+ try {
137
+ const customerInfo = await _reactNativePurchases.default.restorePurchases();
138
+ const isActive = Object.keys(customerInfo.entitlements.active).length > 0;
139
+ return isActive;
140
+ } catch (error) {
141
+ return false;
142
+ }
143
+ }
144
+ }
145
+ exports.RevenueCatHeliumHandler = RevenueCatHeliumHandler;
146
+ //# sourceMappingURL=revenuecat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNativePurchases","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","RevenueCatConfig","config","type","apiKey","RevenueCatHeliumHandler","productIdToPackageMapping","isMappingInitialized","initializationPromise","constructor","Purchases","configure","initializePackageMapping","offerings","getOfferings","current","availablePackages","forEach","pkg","product","identifier","error","ensureMappingInitialized","makePurchase","productId","status","customerInfo","purchasePackage","isActive","isProductActive","purchasesError","code","PURCHASES_ERROR_CODE","PAYMENT_PENDING_ERROR","Promise","resolve","updateListener","updatedCustomerInfo","clearTimeout","timeoutId","removeCustomerInfoUpdateListener","setTimeout","addCustomerInfoUpdateListener","PURCHASE_CANCELLED_ERROR","message","values","entitlements","active","some","entitlement","productIdentifier","activeSubscriptions","includes","allPurchasedProductIdentifiers","restorePurchases","keys","length","exports"],"sourceRoot":"../../../src","sources":["handlers/revenuecat.ts"],"mappings":"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","ignoreList":[]}
@@ -3,6 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "CustomPurchaseConfig", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _types.CustomPurchaseConfig;
10
+ }
11
+ });
6
12
  Object.defineProperty(exports, "HELIUM_CTA_NAMES", {
7
13
  enumerable: true,
8
14
  get: function () {
@@ -21,6 +27,12 @@ Object.defineProperty(exports, "NativeHeliumUpsellView", {
21
27
  return _nativeInterface.NativeHeliumUpsellView;
22
28
  }
23
29
  });
30
+ Object.defineProperty(exports, "RevenueCatConfig", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _revenuecat.RevenueCatConfig;
34
+ }
35
+ });
24
36
  Object.defineProperty(exports, "UpsellView", {
25
37
  enumerable: true,
26
38
  get: function () {
@@ -51,5 +63,7 @@ Object.defineProperty(exports, "useHelium", {
51
63
  return _nativeInterface.useHelium;
52
64
  }
53
65
  });
66
+ var _revenuecat = require("./handlers/revenuecat.js");
54
67
  var _nativeInterface = require("./native-interface.js");
68
+ var _types = require("./types.js");
55
69
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_nativeInterface","require"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_revenuecat","require","_nativeInterface","_types"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AAEA,IAAAE,MAAA,GAAAF,OAAA","ignoreList":[]}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.useHelium = exports.presentUpsell = exports.initialize = exports.hideUpsell = exports.getDownloadStatus = exports.UpsellView = exports.NativeHeliumUpsellView = exports.HeliumProvider = exports.HELIUM_CTA_NAMES = void 0;
7
7
  var _reactNative = require("react-native");
8
8
  var _react = _interopRequireWildcard(require("react"));
9
+ var _revenuecat = require("./handlers/revenuecat.js");
9
10
  var _jsxRuntime = require("react/jsx-runtime");
10
11
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
11
12
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -92,16 +93,16 @@ const HeliumProvider = ({
92
93
  ref: fallbackRef,
93
94
  collapsable: false,
94
95
  style: {
95
- display: 'none' // Initially hidden
96
+ display: 'none'
96
97
  },
97
98
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(FallbackView, {})
98
99
  }), children]
99
100
  });
100
101
  };
101
102
 
102
- // Update initialize to accept config
103
+ // Update initialize to accept full config
103
104
  exports.HeliumProvider = HeliumProvider;
104
- const initialize = async (heliumCallbacks, config = {}) => {
105
+ const initialize = async config => {
105
106
  // Wait for the provider to be mounted if it's not already
106
107
  if (!isProviderMounted) {
107
108
  await providerMountedPromise;
@@ -111,6 +112,26 @@ const initialize = async (heliumCallbacks, config = {}) => {
111
112
  throw new Error('Failed to get fallback view reference. Make sure HeliumProvider is mounted with a fallback view.');
112
113
  }
113
114
 
115
+ // Determine purchase handlers based on config
116
+ let purchaseHandler;
117
+ if (config.purchaseConfig.type === 'revenuecat') {
118
+ // Instantiate RevenueCat handler
119
+ const rcHandler = new _revenuecat.RevenueCatHeliumHandler(config.purchaseConfig.apiKey);
120
+ purchaseHandler = {
121
+ makePurchase: rcHandler.makePurchase.bind(rcHandler),
122
+ restorePurchases: rcHandler.restorePurchases.bind(rcHandler)
123
+ };
124
+ } else if (config.purchaseConfig.type === 'custom') {
125
+ // Use custom callbacks
126
+ purchaseHandler = {
127
+ makePurchase: config.purchaseConfig.makePurchase,
128
+ restorePurchases: config.purchaseConfig.restorePurchases
129
+ };
130
+ } else {
131
+ // Handle potential future types or throw error
132
+ throw new Error('Invalid purchaseConfig type provided.');
133
+ }
134
+
114
135
  // Update download status to inProgress
115
136
  updateDownloadStatus('inProgress');
116
137
 
@@ -141,38 +162,35 @@ const initialize = async (heliumCallbacks, config = {}) => {
141
162
  }
142
163
  }
143
164
 
144
- // Forward all events to the callback
145
- heliumCallbacks.onHeliumPaywallEvent(event);
165
+ // Forward all events to the callback provided in config
166
+ config.onHeliumPaywallEvent(event);
146
167
  });
147
168
 
148
- // Set up purchase event listener
169
+ // Set up purchase event listener using the determined handler
149
170
  heliumEventEmitter.addListener('helium_make_purchase', async event => {
150
- const status = await heliumCallbacks.makePurchase(event.productId);
171
+ const result = await purchaseHandler.makePurchase(event.productId);
151
172
  HeliumBridge.handlePurchaseResponse({
152
173
  transactionId: event.transactionId,
153
- status: status
174
+ status: result.status,
175
+ error: result.error
154
176
  });
155
177
  });
156
178
 
157
- // Set up restore purchases event listener
179
+ // Set up restore purchases event listener using the determined handler
158
180
  heliumEventEmitter.addListener('helium_restore_purchases', async event => {
159
- const success = await heliumCallbacks.restorePurchases();
181
+ const success = await purchaseHandler.restorePurchases();
160
182
  HeliumBridge.handleRestoreResponse({
161
183
  transactionId: event.transactionId,
162
184
  status: success ? 'restored' : 'failed'
163
185
  });
164
186
  });
165
-
166
- // Initialize the bridge with merged config
167
187
  HeliumBridge.initialize({
168
188
  apiKey: config.apiKey,
169
189
  fallbackPaywall: viewTag,
170
190
  triggers: config.triggers || [],
171
191
  customUserId: config.customUserId || null,
172
192
  customAPIEndpoint: config.customAPIEndpoint || null,
173
- customUserTraits: config.customUserTraits == null ? {
174
- "exampleUserTrait": "test_value"
175
- } : config.customUserTraits
193
+ customUserTraits: config.customUserTraits == null ? {} : config.customUserTraits
176
194
  }, {});
177
195
  };
178
196
 
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_react","_interopRequireWildcard","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","HeliumBridge","NativeModules","heliumEventEmitter","NativeEventEmitter","NativeHeliumUpsellView","exports","requireNativeComponent","isProviderMounted","providerMountedPromise","resolveProviderMounted","Promise","resolve","globalDownloadStatus","getDownloadStatus","HeliumContext","createContext","undefined","setDownloadStatusRef","updateDownloadStatus","status","useHelium","context","useContext","Error","fallbackRef","createRef","FallbackViewComponent","HeliumProvider","children","fallbackView","FallbackView","downloadStatus","setDownloadStatus","useState","useEffect","jsxs","Provider","value","jsx","View","ref","collapsable","style","display","initialize","heliumCallbacks","config","viewTag","findNodeHandle","current","addListener","event","type","paywallTemplateName","setNativeProps","onHeliumPaywallEvent","makePurchase","productId","handlePurchaseResponse","transactionId","success","restorePurchases","handleRestoreResponse","apiKey","fallbackPaywall","triggers","customUserId","customAPIEndpoint","customUserTraits","presentUpsell","triggerName","onFallback","getFetchedTriggerNames","triggerNames","includes","error","hideUpsell","UpsellView","trigger","fallbackViewProps","fallbackViewWrapperStyles","HELIUM_CTA_NAMES","SCHEDULE_CALL","SUBSCRIBE_BUTTON"],"sourceRoot":"../../src","sources":["native-interface.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_react","_interopRequireWildcard","_revenuecat","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","HeliumBridge","NativeModules","heliumEventEmitter","NativeEventEmitter","NativeHeliumUpsellView","exports","requireNativeComponent","isProviderMounted","providerMountedPromise","resolveProviderMounted","Promise","resolve","globalDownloadStatus","getDownloadStatus","HeliumContext","createContext","undefined","setDownloadStatusRef","updateDownloadStatus","status","useHelium","context","useContext","Error","fallbackRef","createRef","FallbackViewComponent","HeliumProvider","children","fallbackView","FallbackView","downloadStatus","setDownloadStatus","useState","useEffect","jsxs","Provider","value","jsx","View","ref","collapsable","style","display","initialize","config","viewTag","findNodeHandle","current","purchaseHandler","purchaseConfig","type","rcHandler","RevenueCatHeliumHandler","apiKey","makePurchase","bind","restorePurchases","addListener","event","paywallTemplateName","setNativeProps","onHeliumPaywallEvent","result","productId","handlePurchaseResponse","transactionId","error","success","handleRestoreResponse","fallbackPaywall","triggers","customUserId","customAPIEndpoint","customUserTraits","presentUpsell","triggerName","onFallback","getFetchedTriggerNames","triggerNames","includes","hideUpsell","UpsellView","trigger","fallbackViewProps","fallbackViewWrapperStyles","HELIUM_CTA_NAMES","SCHEDULE_CALL","SUBSCRIBE_BUTTON"],"sourceRoot":"../../src","sources":["native-interface.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,29 @@
1
1
  "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.CustomPurchaseConfig = CustomPurchaseConfig;
7
+ // --- Purchase Configuration Types ---
8
+
9
+ /** Interface for providing custom purchase handling logic. */
10
+
11
+ /** Configuration for using the built-in RevenueCat handler. */
12
+
13
+ // Union type for the purchase configuration
14
+
15
+ // Add other config types here in the future, e.g. | StripePurchaseConfig
16
+
17
+ // Helper function for creating Custom Purchase Config
18
+ function CustomPurchaseConfig(callbacks) {
19
+ return {
20
+ type: 'custom',
21
+ makePurchase: callbacks.makePurchase,
22
+ restorePurchases: callbacks.restorePurchases
23
+ };
24
+ }
25
+
26
+ // --- Main Helium Configuration ---
27
+
28
+ // --- Other Existing Types ---
2
29
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":["CustomPurchaseConfig","callbacks","type","makePurchase","restorePurchases"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;;;;;AAOA;;AAEA;;AAQA;;AAQA;;AAEA;;AAEA;AACO,SAASA,oBAAoBA,CAACC,SAGpC,EAA2B;EAC1B,OAAO;IACLC,IAAI,EAAE,QAAQ;IACdC,YAAY,EAAEF,SAAS,CAACE,YAAY;IACpCC,gBAAgB,EAAEH,SAAS,CAACG;EAC9B,CAAC;AACH;;AAEA;;AAiBA","ignoreList":[]}
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+
3
+ import Purchases, { PURCHASES_ERROR_CODE } from 'react-native-purchases';
4
+ // Rename the factory function
5
+ export function RevenueCatConfig(config) {
6
+ return {
7
+ type: 'revenuecat',
8
+ apiKey: config?.apiKey
9
+ };
10
+ }
11
+ export class RevenueCatHeliumHandler {
12
+ productIdToPackageMapping = {};
13
+ isMappingInitialized = false;
14
+ initializationPromise = null;
15
+ constructor(apiKey) {
16
+ if (apiKey) {
17
+ Purchases.configure({
18
+ apiKey
19
+ });
20
+ } else {}
21
+ this.initializePackageMapping();
22
+ }
23
+ async initializePackageMapping() {
24
+ if (this.initializationPromise) {
25
+ return this.initializationPromise;
26
+ }
27
+ this.initializationPromise = (async () => {
28
+ try {
29
+ const offerings = await Purchases.getOfferings();
30
+ if (offerings.current?.availablePackages) {
31
+ offerings.current.availablePackages.forEach(pkg => {
32
+ if (pkg.product?.identifier) {
33
+ this.productIdToPackageMapping[pkg.product.identifier] = pkg;
34
+ }
35
+ });
36
+ } else {}
37
+ this.isMappingInitialized = true;
38
+ } catch (error) {
39
+ this.isMappingInitialized = false;
40
+ } finally {
41
+ this.initializationPromise = null;
42
+ }
43
+ })();
44
+ return this.initializationPromise;
45
+ }
46
+ async ensureMappingInitialized() {
47
+ if (!this.isMappingInitialized && !this.initializationPromise) {
48
+ await this.initializePackageMapping();
49
+ } else if (this.initializationPromise) {
50
+ await this.initializationPromise;
51
+ }
52
+ }
53
+ async makePurchase(productId) {
54
+ await this.ensureMappingInitialized();
55
+ const pkg = this.productIdToPackageMapping[productId];
56
+ if (!pkg) {
57
+ return {
58
+ status: 'failed',
59
+ error: `RevenueCat Package not found for ID: ${productId}`
60
+ };
61
+ }
62
+ try {
63
+ const {
64
+ customerInfo
65
+ } = await Purchases.purchasePackage(pkg);
66
+ const isActive = this.isProductActive(customerInfo, productId);
67
+ if (isActive) {
68
+ return {
69
+ status: 'purchased'
70
+ };
71
+ } else {
72
+ // This case might occur if the purchase succeeded but the entitlement wasn't immediately active
73
+ // or if a different product became active.
74
+ // Consider if polling/listening might be needed here too, similar to pending.
75
+ // For now, returning failed as the specific product isn't confirmed active.
76
+ return {
77
+ status: 'failed',
78
+ error: 'Purchase possibly complete but entitlement/subscription not active for this product.'
79
+ };
80
+ }
81
+ } catch (error) {
82
+ const purchasesError = error;
83
+ if (purchasesError?.code === PURCHASES_ERROR_CODE.PAYMENT_PENDING_ERROR) {
84
+ // Wait for a terminal state for up to 5 seconds
85
+ return new Promise(resolve => {
86
+ // Define the listener function separately to remove it later
87
+ const updateListener = updatedCustomerInfo => {
88
+ const isActive = this.isProductActive(updatedCustomerInfo, productId);
89
+ if (isActive) {
90
+ clearTimeout(timeoutId);
91
+ // Remove listener using the function reference
92
+ Purchases.removeCustomerInfoUpdateListener(updateListener);
93
+ resolve({
94
+ status: 'purchased'
95
+ });
96
+ }
97
+ };
98
+ const timeoutId = setTimeout(() => {
99
+ // Remove listener using the function reference on timeout
100
+ Purchases.removeCustomerInfoUpdateListener(updateListener);
101
+ resolve({
102
+ status: 'pending'
103
+ });
104
+ }, 5000);
105
+
106
+ // Add the listener
107
+ Purchases.addCustomerInfoUpdateListener(updateListener);
108
+ });
109
+ }
110
+ if (purchasesError?.code === PURCHASES_ERROR_CODE.PURCHASE_CANCELLED_ERROR) {
111
+ return {
112
+ status: 'cancelled'
113
+ };
114
+ }
115
+
116
+ // Handle other errors
117
+ return {
118
+ status: 'failed',
119
+ error: purchasesError?.message || 'RevenueCat purchase failed.'
120
+ };
121
+ }
122
+ }
123
+
124
+ // Helper function to check if a product is active in CustomerInfo
125
+ isProductActive(customerInfo, productId) {
126
+ return Object.values(customerInfo.entitlements.active).some(entitlement => entitlement.productIdentifier === productId) || customerInfo.activeSubscriptions.includes(productId) || customerInfo.allPurchasedProductIdentifiers.includes(productId);
127
+ }
128
+ async restorePurchases() {
129
+ try {
130
+ const customerInfo = await Purchases.restorePurchases();
131
+ const isActive = Object.keys(customerInfo.entitlements.active).length > 0;
132
+ return isActive;
133
+ } catch (error) {
134
+ return false;
135
+ }
136
+ }
137
+ }
138
+ //# sourceMappingURL=revenuecat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Purchases","PURCHASES_ERROR_CODE","RevenueCatConfig","config","type","apiKey","RevenueCatHeliumHandler","productIdToPackageMapping","isMappingInitialized","initializationPromise","constructor","configure","initializePackageMapping","offerings","getOfferings","current","availablePackages","forEach","pkg","product","identifier","error","ensureMappingInitialized","makePurchase","productId","status","customerInfo","purchasePackage","isActive","isProductActive","purchasesError","code","PAYMENT_PENDING_ERROR","Promise","resolve","updateListener","updatedCustomerInfo","clearTimeout","timeoutId","removeCustomerInfoUpdateListener","setTimeout","addCustomerInfoUpdateListener","PURCHASE_CANCELLED_ERROR","message","Object","values","entitlements","active","some","entitlement","productIdentifier","activeSubscriptions","includes","allPurchasedProductIdentifiers","restorePurchases","keys","length"],"sourceRoot":"../../../src","sources":["handlers/revenuecat.ts"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ export { RevenueCatConfig } from "./handlers/revenuecat.js";
3
4
  export { HeliumProvider, initialize, presentUpsell, hideUpsell, UpsellView, HELIUM_CTA_NAMES, useHelium, NativeHeliumUpsellView } from "./native-interface.js";
5
+ export { CustomPurchaseConfig } from "./types.js";
4
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["HeliumProvider","initialize","presentUpsell","hideUpsell","UpsellView","HELIUM_CTA_NAMES","useHelium","NativeHeliumUpsellView"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,cAAc,EAAEC,UAAU,EAAEC,aAAa,EAAEC,UAAU,EAAEC,UAAU,EAAEC,gBAAgB,EAAEC,SAAS,EAAEC,sBAAsB,QAAQ,uBAAoB","ignoreList":[]}
1
+ {"version":3,"names":["RevenueCatConfig","HeliumProvider","initialize","presentUpsell","hideUpsell","UpsellView","HELIUM_CTA_NAMES","useHelium","NativeHeliumUpsellView","CustomPurchaseConfig"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,gBAAgB,QAAQ,0BAAuB;AACxD,SAASC,cAAc,EAAEC,UAAU,EAAEC,aAAa,EAAEC,UAAU,EAAEC,UAAU,EAAEC,gBAAgB,EAAEC,SAAS,EAAEC,sBAAsB,QAAQ,uBAAoB;AAE3J,SAASC,oBAAoB,QAAQ,YAAS","ignoreList":[]}
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { findNodeHandle, NativeModules, View, NativeEventEmitter, requireNativeComponent } from 'react-native';
4
4
  import React, { createRef, useEffect, useState, createContext, useContext } from 'react';
5
+ import { RevenueCatHeliumHandler } from "./handlers/revenuecat.js";
5
6
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
7
  const {
7
8
  HeliumBridge
@@ -85,15 +86,15 @@ export const HeliumProvider = ({
85
86
  ref: fallbackRef,
86
87
  collapsable: false,
87
88
  style: {
88
- display: 'none' // Initially hidden
89
+ display: 'none'
89
90
  },
90
91
  children: /*#__PURE__*/_jsx(FallbackView, {})
91
92
  }), children]
92
93
  });
93
94
  };
94
95
 
95
- // Update initialize to accept config
96
- export const initialize = async (heliumCallbacks, config = {}) => {
96
+ // Update initialize to accept full config
97
+ export const initialize = async config => {
97
98
  // Wait for the provider to be mounted if it's not already
98
99
  if (!isProviderMounted) {
99
100
  await providerMountedPromise;
@@ -103,6 +104,26 @@ export const initialize = async (heliumCallbacks, config = {}) => {
103
104
  throw new Error('Failed to get fallback view reference. Make sure HeliumProvider is mounted with a fallback view.');
104
105
  }
105
106
 
107
+ // Determine purchase handlers based on config
108
+ let purchaseHandler;
109
+ if (config.purchaseConfig.type === 'revenuecat') {
110
+ // Instantiate RevenueCat handler
111
+ const rcHandler = new RevenueCatHeliumHandler(config.purchaseConfig.apiKey);
112
+ purchaseHandler = {
113
+ makePurchase: rcHandler.makePurchase.bind(rcHandler),
114
+ restorePurchases: rcHandler.restorePurchases.bind(rcHandler)
115
+ };
116
+ } else if (config.purchaseConfig.type === 'custom') {
117
+ // Use custom callbacks
118
+ purchaseHandler = {
119
+ makePurchase: config.purchaseConfig.makePurchase,
120
+ restorePurchases: config.purchaseConfig.restorePurchases
121
+ };
122
+ } else {
123
+ // Handle potential future types or throw error
124
+ throw new Error('Invalid purchaseConfig type provided.');
125
+ }
126
+
106
127
  // Update download status to inProgress
107
128
  updateDownloadStatus('inProgress');
108
129
 
@@ -133,38 +154,35 @@ export const initialize = async (heliumCallbacks, config = {}) => {
133
154
  }
134
155
  }
135
156
 
136
- // Forward all events to the callback
137
- heliumCallbacks.onHeliumPaywallEvent(event);
157
+ // Forward all events to the callback provided in config
158
+ config.onHeliumPaywallEvent(event);
138
159
  });
139
160
 
140
- // Set up purchase event listener
161
+ // Set up purchase event listener using the determined handler
141
162
  heliumEventEmitter.addListener('helium_make_purchase', async event => {
142
- const status = await heliumCallbacks.makePurchase(event.productId);
163
+ const result = await purchaseHandler.makePurchase(event.productId);
143
164
  HeliumBridge.handlePurchaseResponse({
144
165
  transactionId: event.transactionId,
145
- status: status
166
+ status: result.status,
167
+ error: result.error
146
168
  });
147
169
  });
148
170
 
149
- // Set up restore purchases event listener
171
+ // Set up restore purchases event listener using the determined handler
150
172
  heliumEventEmitter.addListener('helium_restore_purchases', async event => {
151
- const success = await heliumCallbacks.restorePurchases();
173
+ const success = await purchaseHandler.restorePurchases();
152
174
  HeliumBridge.handleRestoreResponse({
153
175
  transactionId: event.transactionId,
154
176
  status: success ? 'restored' : 'failed'
155
177
  });
156
178
  });
157
-
158
- // Initialize the bridge with merged config
159
179
  HeliumBridge.initialize({
160
180
  apiKey: config.apiKey,
161
181
  fallbackPaywall: viewTag,
162
182
  triggers: config.triggers || [],
163
183
  customUserId: config.customUserId || null,
164
184
  customAPIEndpoint: config.customAPIEndpoint || null,
165
- customUserTraits: config.customUserTraits == null ? {
166
- "exampleUserTrait": "test_value"
167
- } : config.customUserTraits
185
+ customUserTraits: config.customUserTraits == null ? {} : config.customUserTraits
168
186
  }, {});
169
187
  };
170
188