@tryheliumai/paywall-sdk-react-native 0.2.20 → 0.2.21
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.
- package/README.md +0 -5
- package/lib/commonjs/handlers/revenuecat.js +31 -10
- package/lib/commonjs/handlers/revenuecat.js.map +1 -1
- package/lib/module/handlers/revenuecat.js +31 -10
- package/lib/module/handlers/revenuecat.js.map +1 -1
- package/lib/typescript/commonjs/src/handlers/revenuecat.d.ts +1 -0
- package/lib/typescript/commonjs/src/handlers/revenuecat.d.ts.map +1 -1
- package/lib/typescript/module/src/handlers/revenuecat.d.ts +1 -0
- package/lib/typescript/module/src/handlers/revenuecat.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/handlers/revenuecat.ts +44 -12
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
|
|
|
@@ -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
|
-
|
|
40
|
-
|
|
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
|
-
}
|
|
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
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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","
|
|
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
|
-
|
|
33
|
-
|
|
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
|
-
}
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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","
|
|
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":"
|
|
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":"
|
|
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,15 @@
|
|
|
1
|
-
import 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 {
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
+
}
|