@tryheliumai/paywall-sdk-react-native 0.2.13 → 0.2.15
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/PaywallSdkReactNative.podspec +1 -1
- package/README.md +84 -136
- package/ios/HeliumSwiftInterface.swift +12 -0
- package/ios/RCTHeliumBridge.m +6 -0
- package/lib/commonjs/native-interface.js +24 -3
- package/lib/commonjs/native-interface.js.map +1 -1
- package/lib/module/native-interface.js +23 -3
- package/lib/module/native-interface.js.map +1 -1
- package/lib/typescript/commonjs/src/native-interface.d.ts.map +1 -1
- package/lib/typescript/module/src/native-interface.d.ts.map +1 -1
- package/package.json +2 -20
- package/src/native-interface.tsx +29 -4
|
@@ -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', '
|
|
19
|
+
s.dependency 'Helium', '2.0.10'
|
|
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
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
## **Background**
|
|
2
2
|
|
|
3
|
-
Get set up with the Helium SDK for iOS in 5 minutes. Reach out over your Helium slack channel, or email founders@tryhelium.com for any questions.
|
|
3
|
+
Get set up with the Helium SDK for iOS in 5 minutes. Reach out over your Helium slack channel, or email [founders@tryhelium.com](mailto:founders@tryhelium.com) for any questions.
|
|
4
|
+
|
|
4
5
|
## **Installation**
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
We use semantic versioning and recommend version 0.2.0\+
|
|
8
|
+
|
|
9
|
+
Install **@tryheliumai/paywall-sdk-react-native** using your preferred package manager (if using Expo skip to next section):
|
|
7
10
|
|
|
8
11
|
```bash
|
|
9
12
|
npm install @tryheliumai/paywall-sdk-react-native
|
|
@@ -11,54 +14,36 @@ npm install @tryheliumai/paywall-sdk-react-native
|
|
|
11
14
|
yarn add @tryheliumai/paywall-sdk-react-native
|
|
12
15
|
```
|
|
13
16
|
|
|
14
|
-
|
|
17
|
+
and then run the following to install the native dependencies:
|
|
15
18
|
|
|
16
19
|
```bash
|
|
17
|
-
cd ios
|
|
18
|
-
npx pod-install
|
|
19
|
-
cd ..
|
|
20
20
|
npx react-native link @tryheliumai/paywall-sdk-react-native
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
###
|
|
23
|
+
### Expo installation
|
|
24
24
|
|
|
25
|
-
If you
|
|
25
|
+
If you're using Expo's managed workflow, you can install the package by adding it to your project:
|
|
26
26
|
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
"compilerOptions": {
|
|
30
|
-
"moduleResolution": "node16" // or "nodenext" or "bundler"
|
|
31
|
-
}
|
|
32
|
-
}
|
|
27
|
+
```bash
|
|
28
|
+
npx expo install @tryheliumai/paywall-sdk-react-native
|
|
33
29
|
```
|
|
34
30
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
```json
|
|
38
|
-
{
|
|
39
|
-
"compilerOptions": {
|
|
40
|
-
"paths": {
|
|
41
|
-
"@tryheliumai/paywall-sdk-react-native": ["./node_modules/@tryheliumai/paywall-sdk-react-native/lib/typescript/module/src/index.d.ts"]
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
```
|
|
31
|
+
We recommend using Helium with Expo 49 and up. If you're an on older version and having trouble migrating, ping us - we've got experience\
|
|
32
|
+
with all kinds of versioning, upgrade, and custom build plugin work.
|
|
46
33
|
|
|
47
34
|
## **Configuration**
|
|
48
35
|
|
|
49
|
-
###
|
|
36
|
+
### Wrap things in a `HeliumProvider`
|
|
50
37
|
|
|
51
|
-
Wrap
|
|
38
|
+
Wrap a suitably root-y component with `HeliumProvider`. We recommend wrapping your navigation provider, but placing HeliumProvider UNDER your sentry error boundary, to make sure
|
|
39
|
+
errors get logged.
|
|
52
40
|
|
|
53
41
|
```tsx
|
|
54
42
|
import { HeliumProvider } from '@tryheliumai/paywall-sdk-react-native';
|
|
55
43
|
|
|
56
44
|
function App() {
|
|
57
45
|
return (
|
|
58
|
-
<HeliumProvider
|
|
59
|
-
apiKey="<your-helium-api-key>"
|
|
60
|
-
fallbackComponent={YourFallbackComponent}
|
|
61
|
-
>
|
|
46
|
+
<HeliumProvider>
|
|
62
47
|
<YourAppComponent />
|
|
63
48
|
</HeliumProvider>
|
|
64
49
|
);
|
|
@@ -67,146 +52,110 @@ function App() {
|
|
|
67
52
|
|
|
68
53
|
### Initialization
|
|
69
54
|
|
|
70
|
-
Initialize Helium by calling `
|
|
55
|
+
Initialize Helium by calling `initialize()` early in your app's lifecycle, typically in your root component.
|
|
56
|
+
`initialize` takes in a configuration object that includes your purchase config, event handlers, and other settings.
|
|
71
57
|
|
|
72
58
|
```tsx
|
|
73
|
-
import {
|
|
59
|
+
import { initialize, createRevenueCatPurchaseConfig, createCustomPurchaseConfig } from '@tryheliumai/paywall-sdk-react-native';
|
|
74
60
|
|
|
75
61
|
function App() {
|
|
76
62
|
useEffect(() => {
|
|
77
|
-
|
|
63
|
+
initialize({
|
|
78
64
|
// Helium provided api key
|
|
79
65
|
apiKey: '<your-helium-api-key>',
|
|
80
66
|
|
|
81
|
-
// Purchase handlers: described in next section
|
|
82
|
-
delegate: yourDelegate
|
|
83
|
-
|
|
84
67
|
// Custom user id - e.g. your amplitude analytics user id.
|
|
85
68
|
customUserId: '<your-custom-user-id>',
|
|
86
69
|
|
|
87
|
-
//
|
|
88
|
-
|
|
70
|
+
// Purchase configuration (see next section if using RevenueCat)
|
|
71
|
+
purchaseConfig: createCustomPurchaseConfig({
|
|
72
|
+
makePurchase: async (productId) => {
|
|
73
|
+
// Your purchase logic here
|
|
74
|
+
return { status: 'purchased' };
|
|
75
|
+
},
|
|
76
|
+
restorePurchases: async () => {
|
|
77
|
+
// Your restore logic here
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
}),
|
|
81
|
+
|
|
82
|
+
// Event handler for paywall events
|
|
83
|
+
onHeliumPaywallEvent: (event) => {
|
|
84
|
+
switch (event.type) {
|
|
85
|
+
case 'paywallOpen':
|
|
86
|
+
break;
|
|
87
|
+
case 'ctaPressed':
|
|
88
|
+
if (event.ctaName === HELIUM_CTA_NAMES.SCHEDULE_CALL) {
|
|
89
|
+
// Handle schedule call
|
|
90
|
+
}
|
|
91
|
+
break;
|
|
92
|
+
case 'subscriptionSucceeded':
|
|
93
|
+
// Handle successful subscription
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
},
|
|
89
97
|
|
|
90
98
|
// Custom user traits
|
|
91
99
|
customUserTraits: {
|
|
92
100
|
"example_trait": "example_value",
|
|
93
101
|
},
|
|
102
|
+
|
|
94
103
|
});
|
|
95
104
|
}, []);
|
|
96
105
|
}
|
|
97
106
|
```
|
|
98
107
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
Create a payment delegate object that implements the `HeliumPaymentDelegate` interface. This delegate handles purchase logic for your paywalls:
|
|
102
|
-
|
|
103
|
-
```typescript
|
|
104
|
-
export type HeliumTransactionStatus =
|
|
105
|
-
| { type: 'purchased' }
|
|
106
|
-
| { type: 'cancelled' }
|
|
107
|
-
| { type: 'abandoned' }
|
|
108
|
-
| { type: 'failed', error: Error }
|
|
109
|
-
| { type: 'restored' }
|
|
110
|
-
| { type: 'pending' };
|
|
111
|
-
|
|
112
|
-
export interface HeliumPaymentDelegate {
|
|
113
|
-
// [REQUIRED] Trigger the purchase of a product
|
|
114
|
-
makePurchase: (productId: string) => Promise<HeliumTransactionStatus>;
|
|
115
|
-
|
|
116
|
-
// [OPTIONAL] Restore existing subscriptions
|
|
117
|
-
restorePurchases?: () => Promise<boolean>;
|
|
118
|
-
|
|
119
|
-
// [OPTIONAL] Handle Helium paywall events
|
|
120
|
-
onPaywallEvent?: (event: HeliumPaywallEvent) => void;
|
|
121
|
-
|
|
122
|
-
// [OPTIONAL] Provides custom variables for dynamic paywall content
|
|
123
|
-
getCustomVariables?: () => Record<string, any>;
|
|
124
|
-
}
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
### Example Delegate
|
|
128
|
-
|
|
129
|
-
Here's an example delegate using React Native's in-app purchases:
|
|
108
|
+
#### Use RevenueCat with Helium
|
|
130
109
|
|
|
131
|
-
|
|
132
|
-
import * as RNIap from 'react-native-iap';
|
|
133
|
-
|
|
134
|
-
const paymentDelegate: HeliumPaymentDelegate = {
|
|
135
|
-
async makePurchase(productId: string): Promise<HeliumTransactionStatus> {
|
|
136
|
-
try {
|
|
137
|
-
const products = await RNIap.getProducts([productId]);
|
|
138
|
-
const purchase = await RNIap.requestPurchase(productId);
|
|
139
|
-
|
|
140
|
-
if (purchase) {
|
|
141
|
-
return { type: 'purchased' };
|
|
142
|
-
}
|
|
143
|
-
return { type: 'cancelled' };
|
|
144
|
-
} catch (error) {
|
|
145
|
-
return { type: 'failed', error };
|
|
146
|
-
}
|
|
147
|
-
},
|
|
148
|
-
|
|
149
|
-
async restorePurchases(): Promise<boolean> {
|
|
150
|
-
try {
|
|
151
|
-
await RNIap.initConnection();
|
|
152
|
-
const restored = await RNIap.restorePurchases();
|
|
153
|
-
return restored.length > 0;
|
|
154
|
-
} catch (error) {
|
|
155
|
-
console.error('Restore failed:', error);
|
|
156
|
-
return false;
|
|
157
|
-
}
|
|
158
|
-
},
|
|
159
|
-
|
|
160
|
-
getCustomVariables() {
|
|
161
|
-
return {
|
|
162
|
-
userSubscriptionStatus: checkUserSubscriptionStatus(),
|
|
163
|
-
userIntent: checkUserIntent(),
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
};
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
### Checking Download Status
|
|
110
|
+
**Important** Make sure that you've already:
|
|
170
111
|
|
|
171
|
-
|
|
112
|
+
- installed and configured RevenueCat's `Purchases` client - if not, follow [`https://www.revenuecat.com/docs/getting-started/configuring-sdk`](https://www.revenuecat.com/docs/getting-started/configuring-sdk) for more details.
|
|
113
|
+
- have packages configured for each apple app store SKU
|
|
114
|
+
- assigned one of your Offerings as "default"
|
|
115
|
+
- initialize RevenueCat (`Purchases.configure()`) _before_ initializing Helium
|
|
172
116
|
|
|
173
|
-
```
|
|
174
|
-
import {
|
|
117
|
+
```javascript
|
|
118
|
+
import { createRevenueCatPurchaseConfig, HELIUM_CTA_NAMES } from '@tryheliumai/paywall-sdk-react-native';
|
|
175
119
|
|
|
176
|
-
|
|
177
|
-
const status = useHeliumStatus();
|
|
120
|
+
import { Linking } from 'react-native';
|
|
178
121
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
122
|
+
// Usage in your app:
|
|
123
|
+
await initialize({
|
|
124
|
+
apiKey: '<your-helium-api-key>',
|
|
125
|
+
customUserId: '<your-custom-user-id>',
|
|
126
|
+
purchaseConfig: createRevenueCatPurchaseConfig(),
|
|
127
|
+
onHeliumPaywallEvent: (event) => {
|
|
128
|
+
switch (event.type) {
|
|
129
|
+
case 'subscriptionFailed':
|
|
130
|
+
// Custom logic
|
|
186
131
|
break;
|
|
187
|
-
case '
|
|
188
|
-
|
|
132
|
+
case 'subscriptionSucceeded':
|
|
133
|
+
// Handle a subscription success event
|
|
134
|
+
// e.g. navigate to a premium page
|
|
189
135
|
break;
|
|
190
136
|
}
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
return <YourContent />;
|
|
194
|
-
}
|
|
137
|
+
}
|
|
138
|
+
});
|
|
195
139
|
```
|
|
196
140
|
|
|
197
141
|
## **Presenting Paywalls**
|
|
198
142
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
Use the `presentPaywall` method in any component under the `HeliumProvider` to present a paywall:
|
|
143
|
+
Use the `presentUpsell` method in any component under the `HeliumProvider` to present a paywall. `presentUpsell` takes in a dictionary
|
|
144
|
+
specifying the `triggerName` as well as an optional `onFallback` parameter defining custom fallback behavior (in case the user didn't have a network connection)
|
|
202
145
|
|
|
203
146
|
```typescript
|
|
204
|
-
import {
|
|
147
|
+
import { presentUpsell } from '@tryheliumai/paywall-sdk-react-native';
|
|
205
148
|
|
|
206
149
|
function YourComponent() {
|
|
207
150
|
const handlePremiumPress = useCallback(async () => {
|
|
208
|
-
await
|
|
209
|
-
|
|
151
|
+
await presentUpsell({
|
|
152
|
+
triggerName: 'premium_feature_press',
|
|
153
|
+
onFallback: () => {
|
|
154
|
+
// Logic to open a default paywall
|
|
155
|
+
openFallbackPaywall();
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
}, [presentUpsell]);
|
|
210
159
|
|
|
211
160
|
return (
|
|
212
161
|
<Button title="Try Premium" onPress={handlePremiumPress} />
|
|
@@ -214,7 +163,7 @@ function YourComponent() {
|
|
|
214
163
|
}
|
|
215
164
|
```
|
|
216
165
|
|
|
217
|
-
|
|
166
|
+
## Custom Navigation
|
|
218
167
|
|
|
219
168
|
Handle custom navigation or dismissal by implementing the `onPaywallEvent` method in your payment delegate:
|
|
220
169
|
|
|
@@ -238,5 +187,4 @@ const paymentDelegate: HeliumPaymentDelegate = {
|
|
|
238
187
|
|
|
239
188
|
## **Paywall Events**
|
|
240
189
|
|
|
241
|
-
Helium emits various events during the lifecycle of a paywall. You can handle these events in your payment delegate. See the iOS docs
|
|
242
|
-
for more details.
|
|
190
|
+
Helium emits various events during the lifecycle of a paywall. You can handle these events in your payment delegate. See the iOS docs for more details.
|
|
@@ -193,6 +193,7 @@ class HeliumBridge: RCTEventEmitter {
|
|
|
193
193
|
let customUserId = config["customUserId"] as? String
|
|
194
194
|
let customAPIEndpoint = config["customAPIEndpoint"] as? String
|
|
195
195
|
let customUserTraits = config["customUserTraits"] as? [String: Any]
|
|
196
|
+
let revenueCatAppUserId = config["revenueCatAppUserId"] as? String
|
|
196
197
|
let fallbackPaywallPerTriggerTags = config["fallbackPaywallPerTrigger"] as? [String: NSNumber]
|
|
197
198
|
|
|
198
199
|
self.bridgingDelegate = BridgingPaywallDelegate(
|
|
@@ -240,6 +241,7 @@ class HeliumBridge: RCTEventEmitter {
|
|
|
240
241
|
customUserId: customUserId,
|
|
241
242
|
customAPIEndpoint: customAPIEndpoint,
|
|
242
243
|
customUserTraits: HeliumUserTraits(customUserTraits ?? [:]),
|
|
244
|
+
revenueCatAppUserId: revenueCatAppUserId,
|
|
243
245
|
fallbackPaywallPerTrigger: triggerViewsMap
|
|
244
246
|
)
|
|
245
247
|
|
|
@@ -291,4 +293,14 @@ class HeliumBridge: RCTEventEmitter {
|
|
|
291
293
|
public func hideAllUpsells() {
|
|
292
294
|
Helium.shared.hideAllUpsells();
|
|
293
295
|
}
|
|
296
|
+
|
|
297
|
+
@objc
|
|
298
|
+
public func fallbackOpenOrCloseEvent(
|
|
299
|
+
_ trigger: String?,
|
|
300
|
+
isOpen: Bool,
|
|
301
|
+
viewType: String?
|
|
302
|
+
) {
|
|
303
|
+
HeliumPaywallDelegateWrapper.shared.onFallbackOpenCloseEvent(trigger: trigger, isOpen: isOpen, viewType: viewType)
|
|
304
|
+
}
|
|
305
|
+
|
|
294
306
|
}
|
package/ios/RCTHeliumBridge.m
CHANGED
|
@@ -7,7 +7,9 @@ exports.useHelium = exports.presentUpsell = exports.initialize = exports.hideUps
|
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
9
|
var _revenuecat = require("./handlers/revenuecat.js");
|
|
10
|
+
var _reactNativePurchases = _interopRequireDefault(require("react-native-purchases"));
|
|
10
11
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
13
|
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); }
|
|
12
14
|
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; }
|
|
13
15
|
const {
|
|
@@ -68,7 +70,7 @@ const HeliumProvider = ({
|
|
|
68
70
|
children,
|
|
69
71
|
fallbackView
|
|
70
72
|
}) => {
|
|
71
|
-
// TODO - deprecate fallbackView
|
|
73
|
+
// TODO - deprecate fallbackView (and maybe HeliumProvider too?)
|
|
72
74
|
if (fallbackView) {
|
|
73
75
|
console.warn('HeliumProvider: fallbackView is deprecated. Use onFallback passed to presentUpsell instead.');
|
|
74
76
|
}
|
|
@@ -196,13 +198,19 @@ const initialize = async config => {
|
|
|
196
198
|
status: success ? 'restored' : 'failed'
|
|
197
199
|
});
|
|
198
200
|
});
|
|
201
|
+
const usingRevenueCat = await _reactNativePurchases.default.isConfigured();
|
|
202
|
+
let revenueCatAppUserId = null;
|
|
203
|
+
if (usingRevenueCat) {
|
|
204
|
+
revenueCatAppUserId = await _reactNativePurchases.default.getAppUserID();
|
|
205
|
+
}
|
|
199
206
|
HeliumBridge.initialize({
|
|
200
207
|
apiKey: config.apiKey,
|
|
201
208
|
fallbackPaywall: viewTag,
|
|
202
209
|
triggers: config.triggers || [],
|
|
203
210
|
customUserId: config.customUserId || null,
|
|
204
211
|
customAPIEndpoint: config.customAPIEndpoint || null,
|
|
205
|
-
customUserTraits: config.customUserTraits == null ? {} : config.customUserTraits
|
|
212
|
+
customUserTraits: config.customUserTraits == null ? {} : config.customUserTraits,
|
|
213
|
+
revenueCatAppUserId: revenueCatAppUserId
|
|
206
214
|
}, {});
|
|
207
215
|
|
|
208
216
|
// Mark as initialized after successful initialization
|
|
@@ -220,6 +228,7 @@ const presentUpsell = ({
|
|
|
220
228
|
if (!triggerNames.includes(triggerName) || downloadStatus !== 'success') {
|
|
221
229
|
console.log(`Helium trigger "${triggerName}" not found or download status not successful. Status:`, downloadStatus);
|
|
222
230
|
onFallback?.();
|
|
231
|
+
HeliumBridge.fallbackOpenOrCloseEvent(triggerName, true, 'presented');
|
|
223
232
|
return;
|
|
224
233
|
}
|
|
225
234
|
try {
|
|
@@ -227,6 +236,7 @@ const presentUpsell = ({
|
|
|
227
236
|
} catch (error) {
|
|
228
237
|
console.log('Helium present error', error);
|
|
229
238
|
onFallback?.();
|
|
239
|
+
HeliumBridge.fallbackOpenOrCloseEvent(triggerName, true, 'presented');
|
|
230
240
|
}
|
|
231
241
|
});
|
|
232
242
|
};
|
|
@@ -249,10 +259,21 @@ const UpsellView = ({
|
|
|
249
259
|
const {
|
|
250
260
|
downloadStatus
|
|
251
261
|
} = useHelium();
|
|
262
|
+
const showFallback = downloadStatus === 'notStarted' || downloadStatus === 'inProgress' || downloadStatus === 'failed';
|
|
263
|
+
(0, _react.useEffect)(() => {
|
|
264
|
+
if (showFallback && FallbackViewComponent) {
|
|
265
|
+
HeliumBridge.fallbackOpenOrCloseEvent(trigger, true, 'embedded');
|
|
266
|
+
}
|
|
267
|
+
return () => {
|
|
268
|
+
if (showFallback && FallbackViewComponent) {
|
|
269
|
+
HeliumBridge.fallbackOpenOrCloseEvent(trigger, false, 'embedded');
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
}, [showFallback, trigger]);
|
|
252
273
|
|
|
253
274
|
// If download status is notStarted or inProgress, we haven't fully initialized yet
|
|
254
275
|
// In this case, we should render the fallback view
|
|
255
|
-
if (
|
|
276
|
+
if (showFallback) {
|
|
256
277
|
// If we have a fallback view component, render it
|
|
257
278
|
if (FallbackViewComponent) {
|
|
258
279
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_react","_interopRequireWildcard","_revenuecat","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_react","_interopRequireWildcard","_revenuecat","_reactNativePurchases","_interopRequireDefault","_jsxRuntime","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","HeliumBridge","NativeModules","heliumEventEmitter","NativeEventEmitter","NativeHeliumUpsellView","exports","requireNativeComponent","isProviderMounted","isInitialized","providerMountedPromise","resolveProviderMounted","Promise","resolve","globalDownloadStatus","getDownloadStatus","HeliumContext","createContext","undefined","setDownloadStatusRef","updateDownloadStatus","status","useHelium","context","useContext","Error","fallbackRef","createRef","FallbackViewComponent","HeliumProvider","children","fallbackView","console","warn","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","usingRevenueCat","Purchases","isConfigured","revenueCatAppUserId","getAppUserID","fallbackPaywall","triggers","customUserId","customAPIEndpoint","customUserTraits","presentUpsell","triggerName","onFallback","getFetchedTriggerNames","triggerNames","includes","log","fallbackOpenOrCloseEvent","hideUpsell","hideAllUpsells","UpsellView","trigger","fallbackViewProps","fallbackViewWrapperStyles","showFallback","HELIUM_CTA_NAMES","SCHEDULE_CALL","SUBSCRIBE_BUTTON"],"sourceRoot":"../../src","sources":["native-interface.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import { findNodeHandle, NativeModules, View, NativeEventEmitter, requireNativeComponent } from 'react-native';
|
|
4
4
|
import React, { createRef, useEffect, useState, createContext, useContext } from 'react';
|
|
5
5
|
import { RevenueCatHeliumHandler } from "./handlers/revenuecat.js";
|
|
6
|
+
import Purchases from 'react-native-purchases';
|
|
6
7
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
8
|
const {
|
|
8
9
|
HeliumBridge
|
|
@@ -61,7 +62,7 @@ export const HeliumProvider = ({
|
|
|
61
62
|
children,
|
|
62
63
|
fallbackView
|
|
63
64
|
}) => {
|
|
64
|
-
// TODO - deprecate fallbackView
|
|
65
|
+
// TODO - deprecate fallbackView (and maybe HeliumProvider too?)
|
|
65
66
|
if (fallbackView) {
|
|
66
67
|
console.warn('HeliumProvider: fallbackView is deprecated. Use onFallback passed to presentUpsell instead.');
|
|
67
68
|
}
|
|
@@ -188,13 +189,19 @@ export const initialize = async config => {
|
|
|
188
189
|
status: success ? 'restored' : 'failed'
|
|
189
190
|
});
|
|
190
191
|
});
|
|
192
|
+
const usingRevenueCat = await Purchases.isConfigured();
|
|
193
|
+
let revenueCatAppUserId = null;
|
|
194
|
+
if (usingRevenueCat) {
|
|
195
|
+
revenueCatAppUserId = await Purchases.getAppUserID();
|
|
196
|
+
}
|
|
191
197
|
HeliumBridge.initialize({
|
|
192
198
|
apiKey: config.apiKey,
|
|
193
199
|
fallbackPaywall: viewTag,
|
|
194
200
|
triggers: config.triggers || [],
|
|
195
201
|
customUserId: config.customUserId || null,
|
|
196
202
|
customAPIEndpoint: config.customAPIEndpoint || null,
|
|
197
|
-
customUserTraits: config.customUserTraits == null ? {} : config.customUserTraits
|
|
203
|
+
customUserTraits: config.customUserTraits == null ? {} : config.customUserTraits,
|
|
204
|
+
revenueCatAppUserId: revenueCatAppUserId
|
|
198
205
|
}, {});
|
|
199
206
|
|
|
200
207
|
// Mark as initialized after successful initialization
|
|
@@ -211,6 +218,7 @@ export const presentUpsell = ({
|
|
|
211
218
|
if (!triggerNames.includes(triggerName) || downloadStatus !== 'success') {
|
|
212
219
|
console.log(`Helium trigger "${triggerName}" not found or download status not successful. Status:`, downloadStatus);
|
|
213
220
|
onFallback?.();
|
|
221
|
+
HeliumBridge.fallbackOpenOrCloseEvent(triggerName, true, 'presented');
|
|
214
222
|
return;
|
|
215
223
|
}
|
|
216
224
|
try {
|
|
@@ -218,6 +226,7 @@ export const presentUpsell = ({
|
|
|
218
226
|
} catch (error) {
|
|
219
227
|
console.log('Helium present error', error);
|
|
220
228
|
onFallback?.();
|
|
229
|
+
HeliumBridge.fallbackOpenOrCloseEvent(triggerName, true, 'presented');
|
|
221
230
|
}
|
|
222
231
|
});
|
|
223
232
|
};
|
|
@@ -237,10 +246,21 @@ export const UpsellView = ({
|
|
|
237
246
|
const {
|
|
238
247
|
downloadStatus
|
|
239
248
|
} = useHelium();
|
|
249
|
+
const showFallback = downloadStatus === 'notStarted' || downloadStatus === 'inProgress' || downloadStatus === 'failed';
|
|
250
|
+
useEffect(() => {
|
|
251
|
+
if (showFallback && FallbackViewComponent) {
|
|
252
|
+
HeliumBridge.fallbackOpenOrCloseEvent(trigger, true, 'embedded');
|
|
253
|
+
}
|
|
254
|
+
return () => {
|
|
255
|
+
if (showFallback && FallbackViewComponent) {
|
|
256
|
+
HeliumBridge.fallbackOpenOrCloseEvent(trigger, false, 'embedded');
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
}, [showFallback, trigger]);
|
|
240
260
|
|
|
241
261
|
// If download status is notStarted or inProgress, we haven't fully initialized yet
|
|
242
262
|
// In this case, we should render the fallback view
|
|
243
|
-
if (
|
|
263
|
+
if (showFallback) {
|
|
244
264
|
// If we have a fallback view component, render it
|
|
245
265
|
if (FallbackViewComponent) {
|
|
246
266
|
return /*#__PURE__*/_jsx(View, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["findNodeHandle","NativeModules","View","NativeEventEmitter","requireNativeComponent","React","createRef","useEffect","useState","createContext","useContext","RevenueCatHeliumHandler","jsx","_jsx","jsxs","_jsxs","HeliumBridge","heliumEventEmitter","NativeHeliumUpsellView","isProviderMounted","isInitialized","providerMountedPromise","resolveProviderMounted","Promise","resolve","globalDownloadStatus","getDownloadStatus","HeliumContext","undefined","setDownloadStatusRef","updateDownloadStatus","status","useHelium","context","Error","fallbackRef","FallbackViewComponent","HeliumProvider","children","fallbackView","console","warn","FallbackView","downloadStatus","setDownloadStatus","Provider","value","ref","collapsable","style","display","initialize","config","viewTag","current","purchaseHandler","purchaseConfig","type","rcHandler","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","log","hideUpsell","hideAllUpsells","UpsellView","trigger","fallbackViewProps","fallbackViewWrapperStyles","HELIUM_CTA_NAMES","SCHEDULE_CALL","SUBSCRIBE_BUTTON"],"sourceRoot":"../../src","sources":["native-interface.tsx"],"mappings":";;AAAA,SAASA,cAAc,EAAEC,aAAa,EAAEC,IAAI,EAAEC,kBAAkB,EAAEC,sBAAsB,QAAQ,cAAc;AAC9G,OAAOC,KAAK,IAAIC,SAAS,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,aAAa,EAAEC,UAAU,QAAQ,OAAO;AAExF,SAASC,uBAAuB,QAAQ,0BAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;
|
|
1
|
+
{"version":3,"names":["findNodeHandle","NativeModules","View","NativeEventEmitter","requireNativeComponent","React","createRef","useEffect","useState","createContext","useContext","RevenueCatHeliumHandler","Purchases","jsx","_jsx","jsxs","_jsxs","HeliumBridge","heliumEventEmitter","NativeHeliumUpsellView","isProviderMounted","isInitialized","providerMountedPromise","resolveProviderMounted","Promise","resolve","globalDownloadStatus","getDownloadStatus","HeliumContext","undefined","setDownloadStatusRef","updateDownloadStatus","status","useHelium","context","Error","fallbackRef","FallbackViewComponent","HeliumProvider","children","fallbackView","console","warn","FallbackView","downloadStatus","setDownloadStatus","Provider","value","ref","collapsable","style","display","initialize","config","viewTag","current","purchaseHandler","purchaseConfig","type","rcHandler","apiKey","makePurchase","bind","restorePurchases","addListener","event","paywallTemplateName","setNativeProps","onHeliumPaywallEvent","result","productId","handlePurchaseResponse","transactionId","error","success","handleRestoreResponse","usingRevenueCat","isConfigured","revenueCatAppUserId","getAppUserID","fallbackPaywall","triggers","customUserId","customAPIEndpoint","customUserTraits","presentUpsell","triggerName","onFallback","getFetchedTriggerNames","triggerNames","includes","log","fallbackOpenOrCloseEvent","hideUpsell","hideAllUpsells","UpsellView","trigger","fallbackViewProps","fallbackViewWrapperStyles","showFallback","HELIUM_CTA_NAMES","SCHEDULE_CALL","SUBSCRIBE_BUTTON"],"sourceRoot":"../../src","sources":["native-interface.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-interface.d.ts","sourceRoot":"","sources":["../../../../src/native-interface.tsx"],"names":[],"mappings":"AACA,OAAO,KAAoE,MAAM,OAAO,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAwB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"native-interface.d.ts","sourceRoot":"","sources":["../../../../src/native-interface.tsx"],"names":[],"mappings":"AACA,OAAO,KAAoE,MAAM,OAAO,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAwB,MAAM,SAAS,CAAC;AAS/G,eAAO,MAAM,sBAAsB,6DAAoE,CAAC;AAoBxG,eAAO,MAAM,iBAAiB,4BAA6B,CAAC;AAG5D,UAAU,iBAAiB;IACzB,cAAc,EAAE,oBAAoB,CAAC;IACrC,iBAAiB,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;CAC3D;AAYD,eAAO,MAAM,SAAS,yBAMrB,CAAC;AAEF,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,YAAY,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CACpC;AAQD,eAAO,MAAM,cAAc,+BAAgC,mBAAmB,4CAwC7E,CAAC;AAGF,eAAO,MAAM,UAAU,WAAkB,YAAY,kBAuHpD,CAAC;AAGF,eAAO,MAAM,aAAa,gCAGvB;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB,SAqBA,CAAC;AAEF,eAAO,MAAM,UAAU,YAEtB,CAAC;AAEF,eAAO,MAAM,cAAc,YAE1B,CAAC;AAGF,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,GAAG;IACxD,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACxC,yBAAyB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACjD,CAmCA,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;CAG5B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-interface.d.ts","sourceRoot":"","sources":["../../../../src/native-interface.tsx"],"names":[],"mappings":"AACA,OAAO,KAAoE,MAAM,OAAO,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAwB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"native-interface.d.ts","sourceRoot":"","sources":["../../../../src/native-interface.tsx"],"names":[],"mappings":"AACA,OAAO,KAAoE,MAAM,OAAO,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAwB,MAAM,SAAS,CAAC;AAS/G,eAAO,MAAM,sBAAsB,6DAAoE,CAAC;AAoBxG,eAAO,MAAM,iBAAiB,4BAA6B,CAAC;AAG5D,UAAU,iBAAiB;IACzB,cAAc,EAAE,oBAAoB,CAAC;IACrC,iBAAiB,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;CAC3D;AAYD,eAAO,MAAM,SAAS,yBAMrB,CAAC;AAEF,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,YAAY,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CACpC;AAQD,eAAO,MAAM,cAAc,+BAAgC,mBAAmB,4CAwC7E,CAAC;AAGF,eAAO,MAAM,UAAU,WAAkB,YAAY,kBAuHpD,CAAC;AAGF,eAAO,MAAM,aAAa,gCAGvB;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB,SAqBA,CAAC;AAEF,eAAO,MAAM,UAAU,YAEtB,CAAC;AAEF,eAAO,MAAM,cAAc,YAE1B,CAAC;AAGF,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,GAAG;IACxD,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACxC,yBAAyB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACjD,CAmCA,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;CAG5B,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tryheliumai/paywall-sdk-react-native",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.15",
|
|
4
4
|
"description": "Paywall SDK Helium",
|
|
5
5
|
"source": "./src/index.ts",
|
|
6
6
|
"main": "./lib/commonjs/index.js",
|
|
@@ -51,8 +51,7 @@
|
|
|
51
51
|
"typecheck": "tsc",
|
|
52
52
|
"lint": "eslint \"**/*.{js,ts,tsx}\"",
|
|
53
53
|
"clean": "del-cli android/build example/android/build example/android/app/build example/ios/build lib",
|
|
54
|
-
"prepare": "bob build"
|
|
55
|
-
"release": "release-it"
|
|
54
|
+
"prepare": "bob build"
|
|
56
55
|
},
|
|
57
56
|
"keywords": [
|
|
58
57
|
"react-native",
|
|
@@ -118,23 +117,6 @@
|
|
|
118
117
|
"@commitlint/config-conventional"
|
|
119
118
|
]
|
|
120
119
|
},
|
|
121
|
-
"release-it": {
|
|
122
|
-
"git": {
|
|
123
|
-
"commitMessage": "chore: release ${version}",
|
|
124
|
-
"tagName": "v${version}"
|
|
125
|
-
},
|
|
126
|
-
"npm": {
|
|
127
|
-
"publish": true
|
|
128
|
-
},
|
|
129
|
-
"github": {
|
|
130
|
-
"release": true
|
|
131
|
-
},
|
|
132
|
-
"plugins": {
|
|
133
|
-
"@release-it/conventional-changelog": {
|
|
134
|
-
"preset": "angular"
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
},
|
|
138
120
|
"eslintConfig": {
|
|
139
121
|
"root": true,
|
|
140
122
|
"extends": [
|
package/src/native-interface.tsx
CHANGED
|
@@ -2,6 +2,7 @@ import { findNodeHandle, NativeModules, View, NativeEventEmitter, requireNativeC
|
|
|
2
2
|
import React, { createRef, useEffect, useState, createContext, useContext } from 'react';
|
|
3
3
|
import type { HeliumConfig, HeliumUpsellViewProps, HeliumDownloadStatus, HeliumPurchaseResult } from './types';
|
|
4
4
|
import { RevenueCatHeliumHandler } from './handlers/revenuecat';
|
|
5
|
+
import Purchases from 'react-native-purchases';
|
|
5
6
|
|
|
6
7
|
const { HeliumBridge } = NativeModules;
|
|
7
8
|
const heliumEventEmitter = new NativeEventEmitter(HeliumBridge);
|
|
@@ -66,7 +67,7 @@ let FallbackViewComponent: React.ComponentType | null = null;
|
|
|
66
67
|
|
|
67
68
|
// Provider component to be rendered at the app root
|
|
68
69
|
export const HeliumProvider = ({ children, fallbackView }: HeliumProviderProps) => {
|
|
69
|
-
// TODO - deprecate fallbackView
|
|
70
|
+
// TODO - deprecate fallbackView (and maybe HeliumProvider too?)
|
|
70
71
|
if (fallbackView) {
|
|
71
72
|
console.warn('HeliumProvider: fallbackView is deprecated. Use onFallback passed to presentUpsell instead.');
|
|
72
73
|
}
|
|
@@ -206,6 +207,12 @@ export const initialize = async (config: HeliumConfig) => {
|
|
|
206
207
|
}
|
|
207
208
|
);
|
|
208
209
|
|
|
210
|
+
const usingRevenueCat = await Purchases.isConfigured();
|
|
211
|
+
let revenueCatAppUserId = null;
|
|
212
|
+
if (usingRevenueCat) {
|
|
213
|
+
revenueCatAppUserId = await Purchases.getAppUserID();
|
|
214
|
+
}
|
|
215
|
+
|
|
209
216
|
HeliumBridge.initialize(
|
|
210
217
|
{
|
|
211
218
|
apiKey: config.apiKey,
|
|
@@ -213,7 +220,8 @@ export const initialize = async (config: HeliumConfig) => {
|
|
|
213
220
|
triggers: config.triggers || [],
|
|
214
221
|
customUserId: config.customUserId || null,
|
|
215
222
|
customAPIEndpoint: config.customAPIEndpoint || null,
|
|
216
|
-
customUserTraits: config.customUserTraits == null ? {} : config.customUserTraits
|
|
223
|
+
customUserTraits: config.customUserTraits == null ? {} : config.customUserTraits,
|
|
224
|
+
revenueCatAppUserId: revenueCatAppUserId,
|
|
217
225
|
},
|
|
218
226
|
{}
|
|
219
227
|
);
|
|
@@ -238,6 +246,7 @@ export const presentUpsell = ({
|
|
|
238
246
|
downloadStatus
|
|
239
247
|
);
|
|
240
248
|
onFallback?.();
|
|
249
|
+
HeliumBridge.fallbackOpenOrCloseEvent(triggerName, true, 'presented');
|
|
241
250
|
return;
|
|
242
251
|
}
|
|
243
252
|
|
|
@@ -246,6 +255,7 @@ export const presentUpsell = ({
|
|
|
246
255
|
} catch (error) {
|
|
247
256
|
console.log('Helium present error', error);
|
|
248
257
|
onFallback?.();
|
|
258
|
+
HeliumBridge.fallbackOpenOrCloseEvent(triggerName, true, 'presented');
|
|
249
259
|
}
|
|
250
260
|
});
|
|
251
261
|
};
|
|
@@ -264,10 +274,25 @@ export const UpsellView: React.FC<HeliumUpsellViewProps & {
|
|
|
264
274
|
fallbackViewWrapperStyles?: Record<string, any>;
|
|
265
275
|
}> = ({ trigger, fallbackViewProps, fallbackViewWrapperStyles }) => {
|
|
266
276
|
const { downloadStatus } = useHelium();
|
|
267
|
-
|
|
277
|
+
|
|
278
|
+
const showFallback = downloadStatus === 'notStarted' ||
|
|
279
|
+
downloadStatus === 'inProgress' ||
|
|
280
|
+
downloadStatus === 'failed';
|
|
281
|
+
|
|
282
|
+
useEffect(() => {
|
|
283
|
+
if (showFallback && FallbackViewComponent) {
|
|
284
|
+
HeliumBridge.fallbackOpenOrCloseEvent(trigger, true, 'embedded');
|
|
285
|
+
}
|
|
286
|
+
return () => {
|
|
287
|
+
if (showFallback && FallbackViewComponent) {
|
|
288
|
+
HeliumBridge.fallbackOpenOrCloseEvent(trigger, false, 'embedded');
|
|
289
|
+
}
|
|
290
|
+
};
|
|
291
|
+
}, [showFallback, trigger]);
|
|
292
|
+
|
|
268
293
|
// If download status is notStarted or inProgress, we haven't fully initialized yet
|
|
269
294
|
// In this case, we should render the fallback view
|
|
270
|
-
if (
|
|
295
|
+
if (showFallback) {
|
|
271
296
|
// If we have a fallback view component, render it
|
|
272
297
|
if (FallbackViewComponent) {
|
|
273
298
|
return (
|