@tryheliumai/paywall-sdk-react-native 0.2.20 → 0.2.22

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.
@@ -16,7 +16,7 @@ Pod::Spec.new do |s|
16
16
 
17
17
  s.source_files = "ios/**/*.{h,m,mm,swift}"
18
18
 
19
- s.dependency 'Helium', '2.1.0'
19
+ s.dependency 'Helium', '2.3.0'
20
20
 
21
21
  # Use install_modules_dependencies helper to install the dependencies if React Native version >=0.71.0.
22
22
  # See https://github.com/facebook/react-native/blob/febf6b7f33fdb4904669f99d795eba4c0f95d7bf/scripts/cocoapods/new_architecture.rb#L79.
package/README.md CHANGED
@@ -6,9 +6,4 @@ Helium is an upsell experimentation and optimization platform for mobile apps of
6
6
 
7
7
  Follow our [official documentation here](https://docs.tryhelium.com/sdk/quickstart-react-native) to integrate Helium into your React Native app!
8
8
 
9
- ## Contributing
10
-
11
- ### Run the Example Project
12
-
13
- TODO - get example project working
14
9
 
@@ -10,7 +10,6 @@ import Helium
10
10
  import SwiftUI
11
11
  import UIKit
12
12
  import React
13
- import AnyCodable
14
13
  import Combine
15
14
 
16
15
  struct UIViewWrapper: UIViewRepresentable, View {
@@ -21,6 +21,7 @@ class RevenueCatHeliumHandler {
21
21
  productIdToPackageMapping = {};
22
22
  isMappingInitialized = false;
23
23
  initializationPromise = null;
24
+ rcProductToPackageMapping = {};
24
25
  constructor(apiKey) {
25
26
  if (apiKey) {
26
27
  _reactNativePurchases.default.configure({
@@ -36,13 +37,14 @@ class RevenueCatHeliumHandler {
36
37
  this.initializationPromise = (async () => {
37
38
  try {
38
39
  const offerings = await _reactNativePurchases.default.getOfferings();
39
- if (offerings.current?.availablePackages) {
40
- offerings.current.availablePackages.forEach(pkg => {
40
+ const allOfferings = offerings.all;
41
+ for (const offering of Object.values(allOfferings)) {
42
+ offering.availablePackages.forEach(pkg => {
41
43
  if (pkg.product?.identifier) {
42
44
  this.productIdToPackageMapping[pkg.product.identifier] = pkg;
43
45
  }
44
46
  });
45
- } else {}
47
+ }
46
48
  this.isMappingInitialized = true;
47
49
  } catch (error) {
48
50
  this.isMappingInitialized = false;
@@ -62,16 +64,35 @@ class RevenueCatHeliumHandler {
62
64
  async makePurchase(productId) {
63
65
  await this.ensureMappingInitialized();
64
66
  const pkg = this.productIdToPackageMapping[productId];
67
+ let rcProduct;
65
68
  if (!pkg) {
66
- return {
67
- status: 'failed',
68
- error: `RevenueCat Package not found for ID: ${productId}`
69
- };
69
+ // Use cached if available
70
+ rcProduct = this.rcProductToPackageMapping[productId];
71
+ if (!rcProduct) {
72
+ // Try to retrieve now
73
+ try {
74
+ const rcProducts = await _reactNativePurchases.default.getProducts([productId]);
75
+ rcProduct = rcProducts.length > 0 ? rcProducts[0] : undefined;
76
+ } catch {
77
+ // 'failed' status will be returned
78
+ }
79
+ if (rcProduct) {
80
+ this.rcProductToPackageMapping[productId] = rcProduct;
81
+ }
82
+ }
70
83
  }
71
84
  try {
72
- const {
73
- customerInfo
74
- } = await _reactNativePurchases.default.purchasePackage(pkg);
85
+ let customerInfo;
86
+ if (pkg) {
87
+ customerInfo = (await _reactNativePurchases.default.purchasePackage(pkg)).customerInfo;
88
+ } else if (rcProduct) {
89
+ customerInfo = (await _reactNativePurchases.default.purchaseStoreProduct(rcProduct)).customerInfo;
90
+ } else {
91
+ return {
92
+ status: 'failed',
93
+ error: `RevenueCat Product/Package not found for ID: ${productId}`
94
+ };
95
+ }
75
96
  const isActive = this.isProductActive(customerInfo, productId);
76
97
  if (isActive) {
77
98
  return {
@@ -1 +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","createRevenueCatPurchaseConfig","config","rcHandler","RevenueCatHeliumHandler","apiKey","makePurchase","bind","restorePurchases","productIdToPackageMapping","isMappingInitialized","initializationPromise","constructor","Purchases","configure","initializePackageMapping","offerings","getOfferings","current","availablePackages","forEach","pkg","product","identifier","error","ensureMappingInitialized","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","keys","length","exports"],"sourceRoot":"../../../src","sources":["handlers/revenuecat.ts"],"mappings":";;;;;;;AAAA,IAAAA,qBAAA,GAAAC,uBAAA,CAAAC,OAAA;AAAyE,SAAAC,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAIzE;AACO,SAASW,8BAA8BA,CAACC,MAE9C,EAAwB;EACrB,MAAMC,SAAS,GAAG,IAAIC,uBAAuB,CAACF,MAAM,EAAEG,MAAM,CAAC;EAC7D,OAAO;IACLA,MAAM,EAAEH,MAAM,EAAEG,MAAM;IACtBC,YAAY,EAAEH,SAAS,CAACG,YAAY,CAACC,IAAI,CAACJ,SAAS,CAAC;IACpDK,gBAAgB,EAAEL,SAAS,CAACK,gBAAgB,CAACD,IAAI,CAACJ,SAAS;EAC7D,CAAC;AACL;AAEO,MAAMC,uBAAuB,CAAC;EACzBK,yBAAyB,GAAqC,CAAC,CAAC;EAChEC,oBAAoB,GAAY,KAAK;EACrCC,qBAAqB,GAAyB,IAAI;EAE1DC,WAAWA,CAACP,MAAe,EAAE;IACzB,IAAIA,MAAM,EAAE;MACRQ,6BAAS,CAACC,SAAS,CAAC;QAAET;MAAO,CAAC,CAAC;IACnC,CAAC,MAAM,CACP;IACA,IAAI,CAACU,wBAAwB,CAAC,CAAC;EACnC;EAEA,MAAcA,wBAAwBA,CAAA,EAAkB;IACpD,IAAI,IAAI,CAACJ,qBAAqB,EAAE;MAC5B,OAAO,IAAI,CAACA,qBAAqB;IACrC;IACA,IAAI,CAACA,qBAAqB,GAAG,CAAC,YAAY;MACtC,IAAI;QACA,MAAMK,SAAS,GAAG,MAAMH,6BAAS,CAACI,YAAY,CAAC,CAAC;QAChD,IAAID,SAAS,CAACE,OAAO,EAAEC,iBAAiB,EAAE;UACtCH,SAAS,CAACE,OAAO,CAACC,iBAAiB,CAACC,OAAO,CAAEC,GAAqB,IAAK;YACnE,IAAIA,GAAG,CAACC,OAAO,EAAEC,UAAU,EAAE;cACzB,IAAI,CAACd,yBAAyB,CAACY,GAAG,CAACC,OAAO,CAACC,UAAU,CAAC,GAAGF,GAAG;YAChE;UACJ,CAAC,CAAC;QACN,CAAC,MAAM,CACP;QACA,IAAI,CAACX,oBAAoB,GAAG,IAAI;MACpC,CAAC,CAAC,OAAOc,KAAK,EAAE;QACZ,IAAI,CAACd,oBAAoB,GAAG,KAAK;MACrC,CAAC,SAAS;QACL,IAAI,CAACC,qBAAqB,GAAG,IAAI;MACtC;IACJ,CAAC,EAAE,CAAC;IACH,OAAO,IAAI,CAACA,qBAAqB;EACtC;EAEA,MAAcc,wBAAwBA,CAAA,EAAkB;IACpD,IAAI,CAAC,IAAI,CAACf,oBAAoB,IAAI,CAAC,IAAI,CAACC,qBAAqB,EAAE;MAC3D,MAAM,IAAI,CAACI,wBAAwB,CAAC,CAAC;IACzC,CAAC,MAAM,IAAI,IAAI,CAACJ,qBAAqB,EAAE;MACnC,MAAM,IAAI,CAACA,qBAAqB;IACpC;EACJ;EAEA,MAAML,YAAYA,CAACoB,SAAiB,EAAiC;IACjE,MAAM,IAAI,CAACD,wBAAwB,CAAC,CAAC;IAErC,MAAMJ,GAAiC,GAAG,IAAI,CAACZ,yBAAyB,CAACiB,SAAS,CAAC;IACnF,IAAI,CAACL,GAAG,EAAE;MACN,OAAO;QAAEM,MAAM,EAAE,QAAQ;QAAEH,KAAK,EAAE,wCAAwCE,SAAS;MAAG,CAAC;IAC3F;IAEA,IAAI;MACA,MAAM;QAAEE;MAAa,CAAC,GAAG,MAAMf,6BAAS,CAACgB,eAAe,CAACR,GAAG,CAAC;MAC7D,MAAMS,QAAQ,GAAG,IAAI,CAACC,eAAe,CAACH,YAAY,EAAEF,SAAS,CAAC;MAC9D,IAAII,QAAQ,EAAE;QACV,OAAO;UAAEH,MAAM,EAAE;QAAY,CAAC;MAClC,CAAC,MAAM;QACH;QACA;QACA;QACA;QACA,OAAO;UAAEA,MAAM,EAAE,QAAQ;UAAEH,KAAK,EAAE;QAAuF,CAAC;MAC9H;IACJ,CAAC,CAAC,OAAOA,KAAK,EAAE;MACZ,MAAMQ,cAAc,GAAGR,KAAuB;MAE9C,IAAIQ,cAAc,EAAEC,IAAI,KAAKC,0CAAoB,CAACC,qBAAqB,EAAE;QACrE;QACA,OAAO,IAAIC,OAAO,CAAEC,OAAO,IAAK;UAC5B;UACA,MAAMC,cAA0C,GAAIC,mBAAiC,IAAK;YACtF,MAAMT,QAAQ,GAAG,IAAI,CAACC,eAAe,CAACQ,mBAAmB,EAAEb,SAAS,CAAC;YACrE,IAAII,QAAQ,EAAE;cACVU,YAAY,CAACC,SAAS,CAAC;cACvB;cACA5B,6BAAS,CAAC6B,gCAAgC,CAACJ,cAAc,CAAC;cAC1DD,OAAO,CAAC;gBAAEV,MAAM,EAAE;cAAY,CAAC,CAAC;YACpC;UACJ,CAAC;UAED,MAAMc,SAAS,GAAGE,UAAU,CAAC,MAAM;YAC9B;YACD9B,6BAAS,CAAC6B,gCAAgC,CAACJ,cAAc,CAAC;YAC1DD,OAAO,CAAC;cAAEV,MAAM,EAAE;YAAU,CAAC,CAAC;UAClC,CAAC,EAAE,IAAI,CAAC;;UAER;UACAd,6BAAS,CAAC+B,6BAA6B,CAACN,cAAc,CAAC;QAC3D,CAAC,CAAC;MACN;MAEA,IAAIN,cAAc,EAAEC,IAAI,KAAKC,0CAAoB,CAACW,wBAAwB,EAAE;QACxE,OAAO;UAAElB,MAAM,EAAE;QAAY,CAAC;MAClC;;MAEA;MACA,OAAO;QAAEA,MAAM,EAAE,QAAQ;QAAEH,KAAK,EAAEQ,cAAc,EAAEc,OAAO,IAAI;MAA8B,CAAC;IAChG;EACJ;;EAEA;EACQf,eAAeA,CAACH,YAA0B,EAAEF,SAAiB,EAAW;IAC5E,OAAOjC,MAAM,CAACsD,MAAM,CAACnB,YAAY,CAACoB,YAAY,CAACC,MAAM,CAAC,CAACC,IAAI,CAAEC,WAAqC,IAAKA,WAAW,CAACC,iBAAiB,KAAK1B,SAAS,CAAC,IACzIE,YAAY,CAACyB,mBAAmB,CAACC,QAAQ,CAAC5B,SAAS,CAAC,IACpDE,YAAY,CAAC2B,8BAA8B,CAACD,QAAQ,CAAC5B,SAAS,CAAC;EAC7E;EAEA,MAAMlB,gBAAgBA,CAAA,EAAqB;IACvC,IAAI;MACA,MAAMoB,YAAY,GAAG,MAAMf,6BAAS,CAACL,gBAAgB,CAAC,CAAC;MACvD,MAAMsB,QAAQ,GAAGrC,MAAM,CAAC+D,IAAI,CAAC5B,YAAY,CAACoB,YAAY,CAACC,MAAM,CAAC,CAACQ,MAAM,GAAG,CAAC;MACzE,OAAO3B,QAAQ;IACnB,CAAC,CAAC,OAAON,KAAK,EAAE;MACZ,OAAO,KAAK;IAChB;EACJ;AACJ;AAACkC,OAAA,CAAAtD,uBAAA,GAAAA,uBAAA","ignoreList":[]}
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","createRevenueCatPurchaseConfig","config","rcHandler","RevenueCatHeliumHandler","apiKey","makePurchase","bind","restorePurchases","productIdToPackageMapping","isMappingInitialized","initializationPromise","rcProductToPackageMapping","constructor","Purchases","configure","initializePackageMapping","offerings","getOfferings","allOfferings","all","offering","values","availablePackages","forEach","pkg","product","identifier","error","ensureMappingInitialized","productId","rcProduct","rcProducts","getProducts","length","undefined","customerInfo","purchasePackage","purchaseStoreProduct","status","isActive","isProductActive","purchasesError","code","PURCHASES_ERROR_CODE","PAYMENT_PENDING_ERROR","Promise","resolve","updateListener","updatedCustomerInfo","clearTimeout","timeoutId","removeCustomerInfoUpdateListener","setTimeout","addCustomerInfoUpdateListener","PURCHASE_CANCELLED_ERROR","message","entitlements","active","some","entitlement","productIdentifier","activeSubscriptions","includes","allPurchasedProductIdentifiers","keys","exports"],"sourceRoot":"../../../src","sources":["handlers/revenuecat.ts"],"mappings":"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","ignoreList":[]}
@@ -14,6 +14,7 @@ export class RevenueCatHeliumHandler {
14
14
  productIdToPackageMapping = {};
15
15
  isMappingInitialized = false;
16
16
  initializationPromise = null;
17
+ rcProductToPackageMapping = {};
17
18
  constructor(apiKey) {
18
19
  if (apiKey) {
19
20
  Purchases.configure({
@@ -29,13 +30,14 @@ export class RevenueCatHeliumHandler {
29
30
  this.initializationPromise = (async () => {
30
31
  try {
31
32
  const offerings = await Purchases.getOfferings();
32
- if (offerings.current?.availablePackages) {
33
- offerings.current.availablePackages.forEach(pkg => {
33
+ const allOfferings = offerings.all;
34
+ for (const offering of Object.values(allOfferings)) {
35
+ offering.availablePackages.forEach(pkg => {
34
36
  if (pkg.product?.identifier) {
35
37
  this.productIdToPackageMapping[pkg.product.identifier] = pkg;
36
38
  }
37
39
  });
38
- } else {}
40
+ }
39
41
  this.isMappingInitialized = true;
40
42
  } catch (error) {
41
43
  this.isMappingInitialized = false;
@@ -55,16 +57,35 @@ export class RevenueCatHeliumHandler {
55
57
  async makePurchase(productId) {
56
58
  await this.ensureMappingInitialized();
57
59
  const pkg = this.productIdToPackageMapping[productId];
60
+ let rcProduct;
58
61
  if (!pkg) {
59
- return {
60
- status: 'failed',
61
- error: `RevenueCat Package not found for ID: ${productId}`
62
- };
62
+ // Use cached if available
63
+ rcProduct = this.rcProductToPackageMapping[productId];
64
+ if (!rcProduct) {
65
+ // Try to retrieve now
66
+ try {
67
+ const rcProducts = await Purchases.getProducts([productId]);
68
+ rcProduct = rcProducts.length > 0 ? rcProducts[0] : undefined;
69
+ } catch {
70
+ // 'failed' status will be returned
71
+ }
72
+ if (rcProduct) {
73
+ this.rcProductToPackageMapping[productId] = rcProduct;
74
+ }
75
+ }
63
76
  }
64
77
  try {
65
- const {
66
- customerInfo
67
- } = await Purchases.purchasePackage(pkg);
78
+ let customerInfo;
79
+ if (pkg) {
80
+ customerInfo = (await Purchases.purchasePackage(pkg)).customerInfo;
81
+ } else if (rcProduct) {
82
+ customerInfo = (await Purchases.purchaseStoreProduct(rcProduct)).customerInfo;
83
+ } else {
84
+ return {
85
+ status: 'failed',
86
+ error: `RevenueCat Product/Package not found for ID: ${productId}`
87
+ };
88
+ }
68
89
  const isActive = this.isProductActive(customerInfo, productId);
69
90
  if (isActive) {
70
91
  return {
@@ -1 +1 @@
1
- {"version":3,"names":["Purchases","PURCHASES_ERROR_CODE","createRevenueCatPurchaseConfig","config","rcHandler","RevenueCatHeliumHandler","apiKey","makePurchase","bind","restorePurchases","productIdToPackageMapping","isMappingInitialized","initializationPromise","constructor","configure","initializePackageMapping","offerings","getOfferings","current","availablePackages","forEach","pkg","product","identifier","error","ensureMappingInitialized","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","keys","length"],"sourceRoot":"../../../src","sources":["handlers/revenuecat.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Purchases","PURCHASES_ERROR_CODE","createRevenueCatPurchaseConfig","config","rcHandler","RevenueCatHeliumHandler","apiKey","makePurchase","bind","restorePurchases","productIdToPackageMapping","isMappingInitialized","initializationPromise","rcProductToPackageMapping","constructor","configure","initializePackageMapping","offerings","getOfferings","allOfferings","all","offering","Object","values","availablePackages","forEach","pkg","product","identifier","error","ensureMappingInitialized","productId","rcProduct","rcProducts","getProducts","length","undefined","customerInfo","purchasePackage","purchaseStoreProduct","status","isActive","isProductActive","purchasesError","code","PAYMENT_PENDING_ERROR","Promise","resolve","updateListener","updatedCustomerInfo","clearTimeout","timeoutId","removeCustomerInfoUpdateListener","setTimeout","addCustomerInfoUpdateListener","PURCHASE_CANCELLED_ERROR","message","entitlements","active","some","entitlement","productIdentifier","activeSubscriptions","includes","allPurchasedProductIdentifiers","keys"],"sourceRoot":"../../../src","sources":["handlers/revenuecat.ts"],"mappings":"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","ignoreList":[]}
@@ -6,6 +6,7 @@ export declare class RevenueCatHeliumHandler {
6
6
  private productIdToPackageMapping;
7
7
  private isMappingInitialized;
8
8
  private initializationPromise;
9
+ private rcProductToPackageMapping;
9
10
  constructor(apiKey?: string);
10
11
  private initializePackageMapping;
11
12
  private ensureMappingInitialized;
@@ -1 +1 @@
1
- {"version":3,"file":"revenuecat.d.ts","sourceRoot":"","sources":["../../../../../src/handlers/revenuecat.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAI3E,wBAAgB,8BAA8B,CAAC,MAAM,CAAC,EAAE;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,oBAAoB,CAOvB;AAED,qBAAa,uBAAuB;IAChC,OAAO,CAAC,yBAAyB,CAAwC;IACzE,OAAO,CAAC,oBAAoB,CAAkB;IAC9C,OAAO,CAAC,qBAAqB,CAA8B;gBAE/C,MAAM,CAAC,EAAE,MAAM;YAQb,wBAAwB;YAyBxB,wBAAwB;IAQhC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA0DpE,OAAO,CAAC,eAAe;IAMjB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;CAS7C"}
1
+ {"version":3,"file":"revenuecat.d.ts","sourceRoot":"","sources":["../../../../../src/handlers/revenuecat.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAU3E,wBAAgB,8BAA8B,CAAC,MAAM,CAAC,EAAE;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,oBAAoB,CAOvB;AAED,qBAAa,uBAAuB;IAChC,OAAO,CAAC,yBAAyB,CAAwC;IACzE,OAAO,CAAC,oBAAoB,CAAkB;IAC9C,OAAO,CAAC,qBAAqB,CAA8B;IAE3D,OAAO,CAAC,yBAAyB,CAA6C;gBAElE,MAAM,CAAC,EAAE,MAAM;YAQb,wBAAwB;YAyBxB,wBAAwB;IAQhC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA+EpE,OAAO,CAAC,eAAe;IAMjB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;CAS7C"}
@@ -6,6 +6,7 @@ export declare class RevenueCatHeliumHandler {
6
6
  private productIdToPackageMapping;
7
7
  private isMappingInitialized;
8
8
  private initializationPromise;
9
+ private rcProductToPackageMapping;
9
10
  constructor(apiKey?: string);
10
11
  private initializePackageMapping;
11
12
  private ensureMappingInitialized;
@@ -1 +1 @@
1
- {"version":3,"file":"revenuecat.d.ts","sourceRoot":"","sources":["../../../../../src/handlers/revenuecat.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAI3E,wBAAgB,8BAA8B,CAAC,MAAM,CAAC,EAAE;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,oBAAoB,CAOvB;AAED,qBAAa,uBAAuB;IAChC,OAAO,CAAC,yBAAyB,CAAwC;IACzE,OAAO,CAAC,oBAAoB,CAAkB;IAC9C,OAAO,CAAC,qBAAqB,CAA8B;gBAE/C,MAAM,CAAC,EAAE,MAAM;YAQb,wBAAwB;YAyBxB,wBAAwB;IAQhC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA0DpE,OAAO,CAAC,eAAe;IAMjB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;CAS7C"}
1
+ {"version":3,"file":"revenuecat.d.ts","sourceRoot":"","sources":["../../../../../src/handlers/revenuecat.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAU3E,wBAAgB,8BAA8B,CAAC,MAAM,CAAC,EAAE;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,oBAAoB,CAOvB;AAED,qBAAa,uBAAuB;IAChC,OAAO,CAAC,yBAAyB,CAAwC;IACzE,OAAO,CAAC,oBAAoB,CAAkB;IAC9C,OAAO,CAAC,qBAAqB,CAA8B;IAE3D,OAAO,CAAC,yBAAyB,CAA6C;gBAElE,MAAM,CAAC,EAAE,MAAM;YAQb,wBAAwB;YAyBxB,wBAAwB;IAQhC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA+EpE,OAAO,CAAC,eAAe;IAMjB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;CAS7C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tryheliumai/paywall-sdk-react-native",
3
- "version": "0.2.20",
3
+ "version": "0.2.22",
4
4
  "description": "Paywall SDK Helium",
5
5
  "source": "./src/index.ts",
6
6
  "main": "./lib/commonjs/index.js",
@@ -1,6 +1,15 @@
1
- import Purchases, { PURCHASES_ERROR_CODE } from 'react-native-purchases';
1
+ import Purchases, {
2
+ PURCHASES_ERROR_CODE,
3
+ type PurchasesStoreProduct,
4
+ } from 'react-native-purchases';
2
5
  import type { HeliumPurchaseConfig, HeliumPurchaseResult } from '../types';
3
- import type { PurchasesError, PurchasesPackage, CustomerInfoUpdateListener, CustomerInfo, PurchasesEntitlementInfo } from 'react-native-purchases';
6
+ import type {
7
+ PurchasesError,
8
+ PurchasesPackage,
9
+ CustomerInfoUpdateListener,
10
+ CustomerInfo,
11
+ PurchasesEntitlementInfo,
12
+ } from 'react-native-purchases';
4
13
 
5
14
  // Rename the factory function
6
15
  export function createRevenueCatPurchaseConfig(config?: {
@@ -19,6 +28,8 @@ export class RevenueCatHeliumHandler {
19
28
  private isMappingInitialized: boolean = false;
20
29
  private initializationPromise: Promise<void> | null = null;
21
30
 
31
+ private rcProductToPackageMapping: Record<string, PurchasesStoreProduct> = {};
32
+
22
33
  constructor(apiKey?: string) {
23
34
  if (apiKey) {
24
35
  Purchases.configure({ apiKey });
@@ -34,13 +45,13 @@ export class RevenueCatHeliumHandler {
34
45
  this.initializationPromise = (async () => {
35
46
  try {
36
47
  const offerings = await Purchases.getOfferings();
37
- if (offerings.current?.availablePackages) {
38
- offerings.current.availablePackages.forEach((pkg: PurchasesPackage) => {
39
- if (pkg.product?.identifier) {
40
- this.productIdToPackageMapping[pkg.product.identifier] = pkg;
41
- }
42
- });
43
- } else {
48
+ const allOfferings = offerings.all;
49
+ for (const offering of Object.values(allOfferings)) {
50
+ offering.availablePackages.forEach((pkg: PurchasesPackage) => {
51
+ if (pkg.product?.identifier) {
52
+ this.productIdToPackageMapping[pkg.product.identifier] = pkg;
53
+ }
54
+ });
44
55
  }
45
56
  this.isMappingInitialized = true;
46
57
  } catch (error) {
@@ -64,12 +75,33 @@ export class RevenueCatHeliumHandler {
64
75
  await this.ensureMappingInitialized();
65
76
 
66
77
  const pkg: PurchasesPackage | undefined = this.productIdToPackageMapping[productId];
78
+ let rcProduct: PurchasesStoreProduct | undefined;
67
79
  if (!pkg) {
68
- return { status: 'failed', error: `RevenueCat Package not found for ID: ${productId}` };
80
+ // Use cached if available
81
+ rcProduct = this.rcProductToPackageMapping[productId];
82
+ if (!rcProduct) {
83
+ // Try to retrieve now
84
+ try {
85
+ const rcProducts = await Purchases.getProducts([productId]);
86
+ rcProduct = rcProducts.length > 0 ? rcProducts[0] : undefined;
87
+ } catch {
88
+ // 'failed' status will be returned
89
+ }
90
+ if (rcProduct) {
91
+ this.rcProductToPackageMapping[productId] = rcProduct;
92
+ }
93
+ }
69
94
  }
70
95
 
71
96
  try {
72
- const { customerInfo } = await Purchases.purchasePackage(pkg);
97
+ let customerInfo: CustomerInfo;
98
+ if (pkg) {
99
+ customerInfo = (await Purchases.purchasePackage(pkg)).customerInfo;
100
+ } else if (rcProduct) {
101
+ customerInfo = (await Purchases.purchaseStoreProduct(rcProduct)).customerInfo;
102
+ } else {
103
+ return { status: 'failed', error: `RevenueCat Product/Package not found for ID: ${productId}` };
104
+ }
73
105
  const isActive = this.isProductActive(customerInfo, productId);
74
106
  if (isActive) {
75
107
  return { status: 'purchased' };
@@ -133,4 +165,4 @@ export class RevenueCatHeliumHandler {
133
165
  return false;
134
166
  }
135
167
  }
136
- }
168
+ }