rn-onboarding-analytics 1.7.0 → 1.7.1
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 +119 -2
- package/lib/module/spill-onboarding/components/OnboardingPaywallPanel.js +188 -52
- package/lib/module/spill-onboarding/components/OnboardingPaywallPanel.js.map +1 -1
- package/lib/typescript/src/spill-onboarding/components/OnboardingPaywallPanel.d.ts +1 -1
- package/lib/typescript/src/spill-onboarding/components/OnboardingPaywallPanel.d.ts.map +1 -1
- package/lib/typescript/src/spill-onboarding/types.d.ts +28 -6
- package/lib/typescript/src/spill-onboarding/types.d.ts.map +1 -1
- package/package.json +5 -3
- package/src/spill-onboarding/components/OnboardingPaywallPanel.tsx +225 -54
- package/src/spill-onboarding/types.ts +34 -6
package/README.md
CHANGED
|
@@ -28,14 +28,25 @@ npm install rn-onboarding-analytics
|
|
|
28
28
|
The library requires these dependencies for animations and safe area context:
|
|
29
29
|
|
|
30
30
|
```sh
|
|
31
|
-
npm install react-native-reanimated react-native-safe-area-context expo-constants expo-localization
|
|
31
|
+
npm install react-native-reanimated react-native-safe-area-context expo-constants expo-localization react-native-iap
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
+
```
|
|
35
|
+
Add on the babel config:
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
plugins: [
|
|
39
|
+
// should be always the last plugin
|
|
40
|
+
'react-native-reanimated/plugin',
|
|
41
|
+
],
|
|
42
|
+
|
|
43
|
+
````
|
|
44
|
+
|
|
34
45
|
Optionally for image support, install one of:
|
|
35
46
|
|
|
36
47
|
```sh
|
|
37
48
|
npm install expo-image
|
|
38
|
-
|
|
49
|
+
````
|
|
39
50
|
|
|
40
51
|
```sh
|
|
41
52
|
npm install react-native-svg
|
|
@@ -348,6 +359,112 @@ skipButton={({ onPress }) => (
|
|
|
348
359
|
)}
|
|
349
360
|
```
|
|
350
361
|
|
|
362
|
+
#### `paywallPanel`
|
|
363
|
+
|
|
364
|
+
**Type:** `OnboardingPaywallPanelConfig`
|
|
365
|
+
**Optional** - Configuration for the paywall screen shown after the last step.
|
|
366
|
+
|
|
367
|
+
The paywall panel can be either:
|
|
368
|
+
|
|
369
|
+
- **Configuration object**: Pass an object with properties to use the default paywall
|
|
370
|
+
- **Custom component**: Pass a component that receives `onPressContinue` callback
|
|
371
|
+
|
|
372
|
+
**Option 1: Configuration Object**
|
|
373
|
+
|
|
374
|
+
You can use the streamlined configuration by passing `products` with the required parameters. The `SKus` can be defined either as a platform-specific object or a simple array of strings.
|
|
375
|
+
|
|
376
|
+
```tsx
|
|
377
|
+
paywallPanel={{
|
|
378
|
+
title: "Unlock Premium",
|
|
379
|
+
subtitle: "Get access to all features",
|
|
380
|
+
button: "Subscribe",
|
|
381
|
+
image: require('./assets/paywall.png'),
|
|
382
|
+
onPressContinue: (planId) => console.log('Purchased:', planId),
|
|
383
|
+
// Optional links
|
|
384
|
+
onRestorePurchase: {
|
|
385
|
+
text: "Restore",
|
|
386
|
+
onPress: () => console.log("Restore clicked"),
|
|
387
|
+
},
|
|
388
|
+
onTerms: {
|
|
389
|
+
text: "Terms",
|
|
390
|
+
onPress: () => console.log("Terms clicked"),
|
|
391
|
+
},
|
|
392
|
+
onPrivacy: {
|
|
393
|
+
text: "Privacy",
|
|
394
|
+
onPress: () => console.log("Privacy clicked"),
|
|
395
|
+
},
|
|
396
|
+
products: [
|
|
397
|
+
{
|
|
398
|
+
// Platform specific SKUs (Recommended)
|
|
399
|
+
SKus: {
|
|
400
|
+
ios: ['pro_monthly_ios'],
|
|
401
|
+
android: ['pro_monthly_android']
|
|
402
|
+
},
|
|
403
|
+
title: "Monthly Pro",
|
|
404
|
+
featues: ["Unlimited Access", "No Ads"],
|
|
405
|
+
sortOrder: 1
|
|
406
|
+
},
|
|
407
|
+
{
|
|
408
|
+
// Simple array (The library will attempt to match these SKus)
|
|
409
|
+
SKus: ['pro_yearly'],
|
|
410
|
+
title: "Yearly Pro",
|
|
411
|
+
featues: ["Unlimited Access", "No Ads", "Save 20%"],
|
|
412
|
+
sortOrder: 2
|
|
413
|
+
}
|
|
414
|
+
]
|
|
415
|
+
}}
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
**Option 2: Custom Component**
|
|
419
|
+
|
|
420
|
+
For complete control, you can pass a custom component. This is useful if you want to wrap the paywall in your own layout or use `OnboardingPaywallPanel` directly with custom logic.
|
|
421
|
+
|
|
422
|
+
```tsx
|
|
423
|
+
import { OnboardingPaywallPanel } from 'rn-onboarding-analytics';
|
|
424
|
+
|
|
425
|
+
function PaywallScreen({ onPressContinue }) {
|
|
426
|
+
return (
|
|
427
|
+
<OnboardingPaywallPanel
|
|
428
|
+
title="Unlock Premium Features"
|
|
429
|
+
subtitle="Get unlimited lists and more"
|
|
430
|
+
image={require('./assets/paywall.png')}
|
|
431
|
+
onPressContinue={onPressContinue}
|
|
432
|
+
products={[
|
|
433
|
+
{
|
|
434
|
+
SKus: { ios: ['weeklyDose'] },
|
|
435
|
+
title: 'Weekly',
|
|
436
|
+
featues: ['Unlimited lists', 'Priority support'],
|
|
437
|
+
sortOrder: 1,
|
|
438
|
+
},
|
|
439
|
+
]}
|
|
440
|
+
onRestorePurchase={{
|
|
441
|
+
text: 'Restore',
|
|
442
|
+
onPress: () => console.log('Restore'),
|
|
443
|
+
}}
|
|
444
|
+
/>
|
|
445
|
+
);
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
// In your Onboarding usage:
|
|
449
|
+
<Onboarding
|
|
450
|
+
// ...
|
|
451
|
+
paywallPanel={PaywallScreen}
|
|
452
|
+
/>;
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
**Legacy Configuration:**
|
|
456
|
+
You can also manually provide `plans` and `subscriptionSkus`:
|
|
457
|
+
|
|
458
|
+
```tsx
|
|
459
|
+
paywallPanel={{
|
|
460
|
+
// ...
|
|
461
|
+
plans: [
|
|
462
|
+
{ id: 'monthly', title: 'Monthly', price: '$9.99', features: [...] }
|
|
463
|
+
],
|
|
464
|
+
subscriptionSkus: { ios: [...], android: [...] }
|
|
465
|
+
}}
|
|
466
|
+
```
|
|
467
|
+
|
|
351
468
|
## 💡 Best Practices
|
|
352
469
|
|
|
353
470
|
### Image Consistency
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { useMemo, useState, useEffect } from 'react';
|
|
4
4
|
import { Image, StyleSheet, Text, View, TouchableOpacity, ScrollView, Dimensions, Platform } from 'react-native';
|
|
5
|
-
import { initConnection, getSubscriptions, requestSubscription, endConnection } from 'react-native-iap';
|
|
5
|
+
import { initConnection, getSubscriptions, getProducts, requestSubscription, requestPurchase, endConnection } from 'react-native-iap';
|
|
6
6
|
import { useTheme } from "../../utils/ThemeContext.js";
|
|
7
7
|
import PrimaryButton from "../buttons/PrimaryButton.js";
|
|
8
8
|
import { fontSizes, lineHeights } from "../../utils/fontStyles.js";
|
|
@@ -16,7 +16,8 @@ function OnboardingPaywallPanel({
|
|
|
16
16
|
subtitle,
|
|
17
17
|
button,
|
|
18
18
|
image,
|
|
19
|
-
plans,
|
|
19
|
+
plans = [],
|
|
20
|
+
products,
|
|
20
21
|
helperTextContinue,
|
|
21
22
|
onRestorePurchase,
|
|
22
23
|
onTerms,
|
|
@@ -27,41 +28,136 @@ function OnboardingPaywallPanel({
|
|
|
27
28
|
theme
|
|
28
29
|
} = useTheme();
|
|
29
30
|
const styles = useMemo(() => createStyles(theme), [theme]);
|
|
30
|
-
|
|
31
|
+
|
|
32
|
+
// Initialize selectedPlanId based on available configuration
|
|
33
|
+
const initialPlanId = useMemo(() => {
|
|
34
|
+
if (products && products.length > 0) {
|
|
35
|
+
// Sort first to pick the first one correctly if needed,
|
|
36
|
+
// but simplistic approach: pick the first product's first SKU for the current platform
|
|
37
|
+
const firstProduct = products[0];
|
|
38
|
+
if (!firstProduct) return '';
|
|
39
|
+
let firstSku = '';
|
|
40
|
+
if (Array.isArray(firstProduct.SKus)) {
|
|
41
|
+
firstSku = firstProduct.SKus[0] || '';
|
|
42
|
+
} else {
|
|
43
|
+
const skusObj = firstProduct.SKus;
|
|
44
|
+
const skus = Platform.select({
|
|
45
|
+
ios: skusObj.ios,
|
|
46
|
+
android: skusObj.android
|
|
47
|
+
});
|
|
48
|
+
firstSku = skus?.[0] || '';
|
|
49
|
+
}
|
|
50
|
+
return firstSku;
|
|
51
|
+
}
|
|
52
|
+
return plans?.[0]?.id || '';
|
|
53
|
+
}, [products, plans]);
|
|
54
|
+
const [selectedPlanId, setSelectedPlanId] = useState(initialPlanId);
|
|
31
55
|
const [iapProducts, setIapProducts] = useState([]);
|
|
32
56
|
useEffect(() => {
|
|
33
57
|
let isMounted = true;
|
|
34
|
-
|
|
58
|
+
const fetchIapProducts = async skus => {
|
|
59
|
+
try {
|
|
60
|
+
await initConnection();
|
|
61
|
+
if (!isMounted) return;
|
|
62
|
+
|
|
63
|
+
// Fetch both subscriptions and products to cover all bases
|
|
64
|
+
const [subs, prods] = await Promise.all([getSubscriptions({
|
|
65
|
+
skus
|
|
66
|
+
}).catch(() => []), getProducts({
|
|
67
|
+
skus
|
|
68
|
+
}).catch(() => [])]);
|
|
69
|
+
if (isMounted) {
|
|
70
|
+
// Filter out duplicates if any (unlikely but safe)
|
|
71
|
+
const allItems = [...subs, ...prods];
|
|
72
|
+
const uniqueItems = Array.from(new Map(allItems.map(item => [item.productId, item])).values());
|
|
73
|
+
setIapProducts(uniqueItems);
|
|
74
|
+
}
|
|
75
|
+
} catch (err) {
|
|
76
|
+
console.warn('IAP Error:', err);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
if (products && products.length > 0) {
|
|
80
|
+
// Collect all SKUs from all products for current platform
|
|
81
|
+
const allSkus = products.flatMap(p => {
|
|
82
|
+
if (Array.isArray(p.SKus)) {
|
|
83
|
+
return p.SKus;
|
|
84
|
+
}
|
|
85
|
+
const skusObj = p.SKus;
|
|
86
|
+
const skus = Platform.select({
|
|
87
|
+
ios: skusObj.ios,
|
|
88
|
+
android: skusObj.android
|
|
89
|
+
});
|
|
90
|
+
return skus || [];
|
|
91
|
+
});
|
|
92
|
+
if (allSkus.length > 0) {
|
|
93
|
+
fetchIapProducts(allSkus);
|
|
94
|
+
}
|
|
95
|
+
} else if (subscriptionSkus) {
|
|
35
96
|
const skus = Platform.select({
|
|
36
97
|
ios: subscriptionSkus.ios,
|
|
37
98
|
android: subscriptionSkus.android
|
|
38
99
|
});
|
|
39
100
|
if (skus && skus.length > 0) {
|
|
40
|
-
|
|
41
|
-
try {
|
|
42
|
-
await initConnection();
|
|
43
|
-
if (!isMounted) return;
|
|
44
|
-
const products = await getSubscriptions({
|
|
45
|
-
skus
|
|
46
|
-
});
|
|
47
|
-
if (isMounted) {
|
|
48
|
-
setIapProducts(products);
|
|
49
|
-
}
|
|
50
|
-
} catch (err) {
|
|
51
|
-
console.warn('IAP Error:', err);
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
fetchProducts();
|
|
101
|
+
fetchIapProducts(skus);
|
|
55
102
|
}
|
|
56
103
|
}
|
|
57
104
|
return () => {
|
|
58
105
|
isMounted = false;
|
|
59
|
-
if (subscriptionSkus) {
|
|
106
|
+
if (subscriptionSkus || products) {
|
|
60
107
|
endConnection();
|
|
61
108
|
}
|
|
62
109
|
};
|
|
63
|
-
}, [subscriptionSkus]);
|
|
110
|
+
}, [subscriptionSkus, products]);
|
|
64
111
|
const displayPlans = useMemo(() => {
|
|
112
|
+
// New Configuration Mode
|
|
113
|
+
if (products && products.length > 0) {
|
|
114
|
+
const mappedPlans = products.map(config => {
|
|
115
|
+
// Find if any of the product's SKUs matches a fetched IAP product
|
|
116
|
+
let targetSkus = [];
|
|
117
|
+
if (Array.isArray(config.SKus)) {
|
|
118
|
+
targetSkus = config.SKus;
|
|
119
|
+
} else {
|
|
120
|
+
const skusObj = config.SKus;
|
|
121
|
+
targetSkus = Platform.select({
|
|
122
|
+
ios: skusObj.ios,
|
|
123
|
+
android: skusObj.android
|
|
124
|
+
}) || [];
|
|
125
|
+
}
|
|
126
|
+
const iapProduct = iapProducts.find(p => targetSkus.includes(p.productId));
|
|
127
|
+
let price = '...'; // Default loading state
|
|
128
|
+
let id = targetSkus[0] || ''; // Default ID to first SKU
|
|
129
|
+
|
|
130
|
+
if (iapProduct) {
|
|
131
|
+
id = iapProduct.productId;
|
|
132
|
+
if (Platform.OS === 'ios') {
|
|
133
|
+
price = iapProduct.localizedPrice || price;
|
|
134
|
+
} else if (Platform.OS === 'android') {
|
|
135
|
+
const offer = iapProduct.subscriptionOfferDetails?.[0];
|
|
136
|
+
price = offer?.pricingPhases?.pricingPhaseList?.[0]?.formattedPrice || iapProduct.localizedPrice || price;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return {
|
|
140
|
+
id,
|
|
141
|
+
title: config.title,
|
|
142
|
+
price,
|
|
143
|
+
// features with typo 'featues' mapped to correct prop 'features'
|
|
144
|
+
features: config.featues,
|
|
145
|
+
interval: '',
|
|
146
|
+
// Could be inferred from IAP if needed
|
|
147
|
+
sortOrder: config.sortOrder
|
|
148
|
+
};
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
// Sort based on sortOrder
|
|
152
|
+
return mappedPlans.sort((a, b) => {
|
|
153
|
+
if (typeof a.sortOrder === 'number' && typeof b.sortOrder === 'number') {
|
|
154
|
+
return a.sortOrder - b.sortOrder;
|
|
155
|
+
}
|
|
156
|
+
return String(a.sortOrder).localeCompare(String(b.sortOrder));
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// Legacy Mode
|
|
65
161
|
if (iapProducts.length === 0) return plans;
|
|
66
162
|
return plans.map(plan => {
|
|
67
163
|
const iapProduct = iapProducts.find(p => p.productId === plan.id);
|
|
@@ -81,7 +177,7 @@ function OnboardingPaywallPanel({
|
|
|
81
177
|
}
|
|
82
178
|
return plan;
|
|
83
179
|
});
|
|
84
|
-
}, [plans, iapProducts]);
|
|
180
|
+
}, [products, plans, iapProducts]);
|
|
85
181
|
const selectedPlan = displayPlans.find(p => p.id === selectedPlanId);
|
|
86
182
|
const renderTitle = () => {
|
|
87
183
|
if (!title) return null;
|
|
@@ -146,34 +242,74 @@ function OnboardingPaywallPanel({
|
|
|
146
242
|
};
|
|
147
243
|
const renderButton = () => {
|
|
148
244
|
const handlePress = async () => {
|
|
149
|
-
|
|
245
|
+
console.log('OnboardingPaywallPanel: handlePress', {
|
|
246
|
+
selectedPlanId
|
|
247
|
+
});
|
|
248
|
+
if ((subscriptionSkus || products) && selectedPlanId) {
|
|
150
249
|
try {
|
|
151
250
|
const iapProduct = iapProducts.find(p => p.productId === selectedPlanId);
|
|
152
251
|
if (iapProduct) {
|
|
153
|
-
//
|
|
154
|
-
//
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
await requestSubscription({
|
|
160
|
-
sku: selectedPlanId,
|
|
161
|
-
...(offerToken && {
|
|
162
|
-
subscriptionOffers: [{
|
|
163
|
-
sku: selectedPlanId,
|
|
164
|
-
offerToken
|
|
165
|
-
}]
|
|
166
|
-
})
|
|
252
|
+
// Determine if it's a subscription or one-time purchase
|
|
253
|
+
// Subscriptions usually have 'subscriptionPeriodNumberIOS' or 'subscriptionOfferDetails'
|
|
254
|
+
const isSubscription = 'subscriptionPeriodNumberIOS' in iapProduct || 'subscriptionOfferDetails' in iapProduct;
|
|
255
|
+
console.log('OnboardingPaywallPanel: Processing purchase', {
|
|
256
|
+
isSubscription,
|
|
257
|
+
productId: iapProduct.productId
|
|
167
258
|
});
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
259
|
+
if (isSubscription) {
|
|
260
|
+
// For Android, we might need offerToken if available
|
|
261
|
+
let offerToken;
|
|
262
|
+
if (Platform.OS === 'android') {
|
|
263
|
+
offerToken = iapProduct.subscriptionOfferDetails?.[0]?.offerToken;
|
|
264
|
+
}
|
|
265
|
+
console.log('OnboardingPaywallPanel: Requesting subscription', {
|
|
266
|
+
sku: selectedPlanId,
|
|
267
|
+
offerToken
|
|
268
|
+
});
|
|
269
|
+
await requestSubscription({
|
|
270
|
+
sku: selectedPlanId,
|
|
271
|
+
...(offerToken && {
|
|
272
|
+
subscriptionOffers: [{
|
|
273
|
+
sku: selectedPlanId,
|
|
274
|
+
offerToken
|
|
275
|
+
}]
|
|
276
|
+
})
|
|
277
|
+
});
|
|
278
|
+
} else {
|
|
279
|
+
console.log('OnboardingPaywallPanel: Requesting one-time purchase', {
|
|
280
|
+
sku: selectedPlanId
|
|
281
|
+
});
|
|
282
|
+
await requestPurchase({
|
|
283
|
+
sku: selectedPlanId
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
} else {
|
|
287
|
+
// Fallback if product not found in fetched list but ID exists
|
|
288
|
+
// Try subscription first as default legacy behavior
|
|
289
|
+
console.log('OnboardingPaywallPanel: Product not in IAP list, attempting fallback purchase', selectedPlanId);
|
|
290
|
+
try {
|
|
291
|
+
console.log('OnboardingPaywallPanel: Fallback - attempting requestSubscription', selectedPlanId);
|
|
292
|
+
await requestSubscription({
|
|
293
|
+
sku: selectedPlanId
|
|
294
|
+
});
|
|
295
|
+
} catch (subErr) {
|
|
296
|
+
console.warn('OnboardingPaywallPanel: Fallback requestSubscription failed', subErr);
|
|
297
|
+
console.log('OnboardingPaywallPanel: Fallback - attempting requestPurchase', selectedPlanId);
|
|
298
|
+
try {
|
|
299
|
+
await requestPurchase({
|
|
300
|
+
sku: selectedPlanId
|
|
301
|
+
});
|
|
302
|
+
} catch (purchErr) {
|
|
303
|
+
console.warn('OnboardingPaywallPanel: Fallback requestPurchase failed', purchErr);
|
|
304
|
+
throw purchErr;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
171
307
|
}
|
|
172
308
|
} catch (err) {
|
|
173
|
-
console.
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
309
|
+
console.warn('Purchase Error:', err);
|
|
310
|
+
if (typeof err === 'object') {
|
|
311
|
+
console.warn('Purchase Error Details:', JSON.stringify(err, null, 2));
|
|
312
|
+
}
|
|
177
313
|
return;
|
|
178
314
|
}
|
|
179
315
|
}
|
|
@@ -265,22 +401,22 @@ const createStyles = theme => StyleSheet.create({
|
|
|
265
401
|
},
|
|
266
402
|
sheetContainer: {
|
|
267
403
|
flex: 1,
|
|
268
|
-
marginTop: -
|
|
404
|
+
marginTop: -24,
|
|
269
405
|
backgroundColor: theme.bg.secondary,
|
|
270
|
-
borderTopLeftRadius:
|
|
271
|
-
borderTopRightRadius:
|
|
272
|
-
overflow: '
|
|
406
|
+
borderTopLeftRadius: 30,
|
|
407
|
+
borderTopRightRadius: 30,
|
|
408
|
+
overflow: 'scroll'
|
|
273
409
|
},
|
|
274
410
|
container: {
|
|
275
411
|
flex: 1
|
|
276
412
|
},
|
|
277
413
|
contentContainer: {
|
|
278
|
-
paddingBottom:
|
|
414
|
+
paddingBottom: 24
|
|
279
415
|
},
|
|
280
416
|
footerContainer: {
|
|
281
|
-
paddingHorizontal:
|
|
282
|
-
|
|
283
|
-
paddingTop:
|
|
417
|
+
paddingHorizontal: 8,
|
|
418
|
+
marginBottom: 40,
|
|
419
|
+
paddingTop: 4,
|
|
284
420
|
backgroundColor: theme.bg.secondary
|
|
285
421
|
},
|
|
286
422
|
contentWrapper: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMemo","useState","useEffect","Image","StyleSheet","Text","View","TouchableOpacity","ScrollView","Dimensions","Platform","initConnection","getSubscriptions","requestSubscription","endConnection","useTheme","PrimaryButton","fontSizes","lineHeights","jsx","_jsx","jsxs","_jsxs","height","screenHeight","get","OnboardingPaywallPanel","onPressContinue","title","subtitle","button","image","plans","helperTextContinue","onRestorePurchase","onTerms","onPrivacy","subscriptionSkus","theme","styles","createStyles","selectedPlanId","setSelectedPlanId","id","iapProducts","setIapProducts","isMounted","skus","select","ios","android","length","fetchProducts","products","err","console","warn","displayPlans","map","plan","iapProduct","find","p","productId","price","OS","localizedPrice","offer","subscriptionOfferDetails","pricingPhases","pricingPhaseList","formattedPrice","selectedPlan","renderTitle","style","text","line1","titleText","children","renderSubtitle","line2","subtitleText","renderFeatures","features","featuresContainer","feature","index","featureRow","checkIcon","featureText","renderPlans","plansContainer","isSelected","planCard","planCardSelected","onPress","activeOpacity","planTitle","planTitleSelected","interval","planInterval","planIntervalSelected","planPrice","planPriceSelected","renderButton","handlePress","offerToken","sku","subscriptionOffers","log","renderFooterLinks","footerLinksContainer","footerLinkText","footerLinkSeparator","mainContainer","headerImageContainer","source","resizeMode","sheetContainer","container","contentContainerStyle","contentContainer","showsVerticalScrollIndicator","bounces","contentWrapper","headerContainer","footerContainer","helperText","create","flex","backgroundColor","bg","secondary","width","marginTop","borderTopLeftRadius","borderTopRightRadius","overflow","paddingBottom","paddingHorizontal","paddingTop","alignItems","marginBottom","fontSize","xxl","lineHeight","textAlign","color","primary","md","fontFamily","fonts","introTitle","fontWeight","introSubtitle","flexDirection","accent","lg","marginRight","gap","justifyContent","padding","minHeight","borderRadius","borderWidth","borderColor","label","shadowColor","shadowOffset","shadowOpacity","shadowRadius","elevation","sm","xs"],"sourceRoot":"../../../../src","sources":["spill-onboarding/components/OnboardingPaywallPanel.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useMemo","useState","useEffect","Image","StyleSheet","Text","View","TouchableOpacity","ScrollView","Dimensions","Platform","initConnection","getSubscriptions","getProducts","requestSubscription","requestPurchase","endConnection","useTheme","PrimaryButton","fontSizes","lineHeights","jsx","_jsx","jsxs","_jsxs","height","screenHeight","get","OnboardingPaywallPanel","onPressContinue","title","subtitle","button","image","plans","products","helperTextContinue","onRestorePurchase","onTerms","onPrivacy","subscriptionSkus","theme","styles","createStyles","initialPlanId","length","firstProduct","firstSku","Array","isArray","SKus","skusObj","skus","select","ios","android","id","selectedPlanId","setSelectedPlanId","iapProducts","setIapProducts","isMounted","fetchIapProducts","subs","prods","Promise","all","catch","allItems","uniqueItems","from","Map","map","item","productId","values","err","console","warn","allSkus","flatMap","p","displayPlans","mappedPlans","config","targetSkus","iapProduct","find","includes","price","OS","localizedPrice","offer","subscriptionOfferDetails","pricingPhases","pricingPhaseList","formattedPrice","features","featues","interval","sortOrder","sort","a","b","String","localeCompare","plan","selectedPlan","renderTitle","style","text","line1","titleText","children","renderSubtitle","line2","subtitleText","renderFeatures","featuresContainer","feature","index","featureRow","checkIcon","featureText","renderPlans","plansContainer","isSelected","planCard","planCardSelected","onPress","activeOpacity","planTitle","planTitleSelected","planInterval","planIntervalSelected","planPrice","planPriceSelected","renderButton","handlePress","log","isSubscription","offerToken","sku","subscriptionOffers","subErr","purchErr","JSON","stringify","renderFooterLinks","footerLinksContainer","footerLinkText","footerLinkSeparator","mainContainer","headerImageContainer","source","resizeMode","sheetContainer","container","contentContainerStyle","contentContainer","showsVerticalScrollIndicator","bounces","contentWrapper","headerContainer","footerContainer","helperText","create","flex","backgroundColor","bg","secondary","width","marginTop","borderTopLeftRadius","borderTopRightRadius","overflow","paddingBottom","paddingHorizontal","marginBottom","paddingTop","alignItems","fontSize","xxl","lineHeight","textAlign","color","primary","md","fontFamily","fonts","introTitle","fontWeight","introSubtitle","flexDirection","accent","lg","marginRight","gap","justifyContent","padding","minHeight","borderRadius","borderWidth","borderColor","label","shadowColor","shadowOffset","shadowOpacity","shadowRadius","elevation","sm","xs"],"sourceRoot":"../../../../src","sources":["spill-onboarding/components/OnboardingPaywallPanel.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { OnboardingPaywallPanelProps } from '../types';
|
|
2
|
-
declare function OnboardingPaywallPanel({ onPressContinue, title, subtitle, button, image, plans, helperTextContinue, onRestorePurchase, onTerms, onPrivacy, subscriptionSkus, }: OnboardingPaywallPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
declare function OnboardingPaywallPanel({ onPressContinue, title, subtitle, button, image, plans, products, helperTextContinue, onRestorePurchase, onTerms, onPrivacy, subscriptionSkus, }: OnboardingPaywallPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
export default OnboardingPaywallPanel;
|
|
4
4
|
//# sourceMappingURL=OnboardingPaywallPanel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OnboardingPaywallPanel.d.ts","sourceRoot":"","sources":["../../../../../src/spill-onboarding/components/OnboardingPaywallPanel.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"OnboardingPaywallPanel.d.ts","sourceRoot":"","sources":["../../../../../src/spill-onboarding/components/OnboardingPaywallPanel.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,2BAA2B,EAAe,MAAM,UAAU,CAAC;AAIzE,iBAAS,sBAAsB,CAAC,EAC9B,eAAe,EACf,KAAK,EACL,QAAQ,EACR,MAAM,EACN,KAAK,EACL,KAAU,EACV,QAAQ,EACR,kBAAkB,EAClB,iBAAiB,EACjB,OAAO,EACP,SAAS,EACT,gBAAgB,GACjB,EAAE,2BAA2B,2CA4b7B;AAED,eAAe,sBAAsB,CAAC"}
|
|
@@ -200,6 +200,10 @@ export interface OnboardingProps {
|
|
|
200
200
|
*/
|
|
201
201
|
paywallPanel?: OnboardingPaywallPanelConfig;
|
|
202
202
|
}
|
|
203
|
+
export interface PlatformSku {
|
|
204
|
+
ios?: string[];
|
|
205
|
+
android?: string[];
|
|
206
|
+
}
|
|
203
207
|
export interface PaywallPlan {
|
|
204
208
|
id: string;
|
|
205
209
|
title: string;
|
|
@@ -207,6 +211,19 @@ export interface PaywallPlan {
|
|
|
207
211
|
interval?: string;
|
|
208
212
|
features?: string[];
|
|
209
213
|
}
|
|
214
|
+
/**
|
|
215
|
+
* Simplified configuration for a single paywall product/plan.
|
|
216
|
+
*/
|
|
217
|
+
export interface PaywallProductConfig {
|
|
218
|
+
/** SKUs for different platforms. */
|
|
219
|
+
SKus: PlatformSku | string[];
|
|
220
|
+
/** Main product title/name. */
|
|
221
|
+
title: string;
|
|
222
|
+
/** Array of product features. */
|
|
223
|
+
featues: string[];
|
|
224
|
+
/** Numeric or alphanumeric sorting preference. */
|
|
225
|
+
sortOrder: number | string;
|
|
226
|
+
}
|
|
210
227
|
/**
|
|
211
228
|
* Props for the paywall panel.
|
|
212
229
|
*/
|
|
@@ -217,8 +234,16 @@ export interface OnboardingPaywallPanelProps {
|
|
|
217
234
|
title?: string | ReactNode;
|
|
218
235
|
/** Subtitle content. */
|
|
219
236
|
subtitle?: string | ReactNode;
|
|
220
|
-
/**
|
|
221
|
-
|
|
237
|
+
/**
|
|
238
|
+
* List of plans to display.
|
|
239
|
+
* Required if `products` is not provided.
|
|
240
|
+
*/
|
|
241
|
+
plans?: PaywallPlan[];
|
|
242
|
+
/**
|
|
243
|
+
* Simplified configuration for paywall products.
|
|
244
|
+
* If provided, handles fetching and displaying products automatically.
|
|
245
|
+
*/
|
|
246
|
+
products?: PaywallProductConfig[];
|
|
222
247
|
/**
|
|
223
248
|
* Button content. Either a simple string label or a render function.
|
|
224
249
|
*/
|
|
@@ -249,10 +274,7 @@ export interface OnboardingPaywallPanelProps {
|
|
|
249
274
|
* If provided, the component will attempt to fetch product details from the store
|
|
250
275
|
* using react-native-iap and handle purchases.
|
|
251
276
|
*/
|
|
252
|
-
subscriptionSkus?:
|
|
253
|
-
ios?: string[];
|
|
254
|
-
android?: string[];
|
|
255
|
-
};
|
|
277
|
+
subscriptionSkus?: PlatformSku;
|
|
256
278
|
}
|
|
257
279
|
type OnboardingPaywallPanelConfig = OnboardingPaywallPanelProps | (({ onPressContinue, }: {
|
|
258
280
|
onPressContinue: (planId: string) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/spill-onboarding/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/spill-onboarding/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rn-onboarding-analytics",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.1",
|
|
4
4
|
"description": "Onboarding/tutorial flow for React Native with analytics.",
|
|
5
5
|
"main": "./lib/module/index.js",
|
|
6
6
|
"types": "./lib/typescript/src/index.d.ts",
|
|
@@ -38,7 +38,8 @@
|
|
|
38
38
|
"prepare": "bob build",
|
|
39
39
|
"prepack": "sed -i '' '1s|.*||' README.md",
|
|
40
40
|
"postpack": "git checkout README.md",
|
|
41
|
-
"release": "release-it --only-version"
|
|
41
|
+
"release": "release-it --only-version",
|
|
42
|
+
"watch:yalc": "nodemon --watch src --ext ts,tsx,js,json --exec 'npm run prepare && yalc push'"
|
|
42
43
|
},
|
|
43
44
|
"keywords": [
|
|
44
45
|
"react-native",
|
|
@@ -77,7 +78,8 @@
|
|
|
77
78
|
"eslint-plugin-prettier": "^5.5.4",
|
|
78
79
|
"expo-image": "^3.0.8",
|
|
79
80
|
"jest": "^29.7.0",
|
|
80
|
-
"
|
|
81
|
+
"nodemon": "^3.1.11",
|
|
82
|
+
"prettier": "^3.7.4",
|
|
81
83
|
"react": "19.1.0",
|
|
82
84
|
"react-native": "0.81.4",
|
|
83
85
|
"react-native-builder-bob": "^0.40.13",
|
|
@@ -12,15 +12,18 @@ import {
|
|
|
12
12
|
import {
|
|
13
13
|
initConnection,
|
|
14
14
|
getSubscriptions,
|
|
15
|
+
getProducts,
|
|
15
16
|
requestSubscription,
|
|
17
|
+
requestPurchase,
|
|
16
18
|
endConnection,
|
|
17
19
|
type Subscription,
|
|
20
|
+
type Product,
|
|
18
21
|
} from 'react-native-iap';
|
|
19
22
|
import { useTheme } from '../../utils/ThemeContext';
|
|
20
23
|
import type { Theme } from '../../utils/theme';
|
|
21
24
|
import PrimaryButton from '../buttons/PrimaryButton';
|
|
22
25
|
import { fontSizes, lineHeights } from '../../utils/fontStyles';
|
|
23
|
-
import type { OnboardingPaywallPanelProps } from '../types';
|
|
26
|
+
import type { OnboardingPaywallPanelProps, PlatformSku } from '../types';
|
|
24
27
|
|
|
25
28
|
const { height: screenHeight } = Dimensions.get('window');
|
|
26
29
|
|
|
@@ -30,7 +33,8 @@ function OnboardingPaywallPanel({
|
|
|
30
33
|
subtitle,
|
|
31
34
|
button,
|
|
32
35
|
image,
|
|
33
|
-
plans,
|
|
36
|
+
plans = [],
|
|
37
|
+
products,
|
|
34
38
|
helperTextContinue,
|
|
35
39
|
onRestorePurchase,
|
|
36
40
|
onTerms,
|
|
@@ -39,48 +43,159 @@ function OnboardingPaywallPanel({
|
|
|
39
43
|
}: OnboardingPaywallPanelProps) {
|
|
40
44
|
const { theme } = useTheme();
|
|
41
45
|
const styles = useMemo(() => createStyles(theme), [theme]);
|
|
42
|
-
|
|
43
|
-
|
|
46
|
+
|
|
47
|
+
// Initialize selectedPlanId based on available configuration
|
|
48
|
+
const initialPlanId = useMemo(() => {
|
|
49
|
+
if (products && products.length > 0) {
|
|
50
|
+
// Sort first to pick the first one correctly if needed,
|
|
51
|
+
// but simplistic approach: pick the first product's first SKU for the current platform
|
|
52
|
+
const firstProduct = products[0];
|
|
53
|
+
if (!firstProduct) return '';
|
|
54
|
+
let firstSku = '';
|
|
55
|
+
if (Array.isArray(firstProduct.SKus)) {
|
|
56
|
+
firstSku = firstProduct.SKus[0] || '';
|
|
57
|
+
} else {
|
|
58
|
+
const skusObj = firstProduct.SKus as PlatformSku;
|
|
59
|
+
const skus = Platform.select({
|
|
60
|
+
ios: skusObj.ios,
|
|
61
|
+
android: skusObj.android,
|
|
62
|
+
});
|
|
63
|
+
firstSku = skus?.[0] || '';
|
|
64
|
+
}
|
|
65
|
+
return firstSku;
|
|
66
|
+
}
|
|
67
|
+
return plans?.[0]?.id || '';
|
|
68
|
+
}, [products, plans]);
|
|
69
|
+
|
|
70
|
+
const [selectedPlanId, setSelectedPlanId] = useState<string>(initialPlanId);
|
|
71
|
+
const [iapProducts, setIapProducts] = useState<(Subscription | Product)[]>(
|
|
72
|
+
[]
|
|
44
73
|
);
|
|
45
|
-
const [iapProducts, setIapProducts] = useState<Subscription[]>([]);
|
|
46
74
|
|
|
47
75
|
useEffect(() => {
|
|
48
76
|
let isMounted = true;
|
|
49
77
|
|
|
50
|
-
|
|
78
|
+
const fetchIapProducts = async (skus: string[]) => {
|
|
79
|
+
try {
|
|
80
|
+
await initConnection();
|
|
81
|
+
if (!isMounted) return;
|
|
82
|
+
|
|
83
|
+
// Fetch both subscriptions and products to cover all bases
|
|
84
|
+
const [subs, prods] = await Promise.all([
|
|
85
|
+
getSubscriptions({ skus }).catch(() => [] as Subscription[]),
|
|
86
|
+
getProducts({ skus }).catch(() => [] as Product[]),
|
|
87
|
+
]);
|
|
88
|
+
|
|
89
|
+
if (isMounted) {
|
|
90
|
+
// Filter out duplicates if any (unlikely but safe)
|
|
91
|
+
const allItems = [...subs, ...prods];
|
|
92
|
+
const uniqueItems = Array.from(
|
|
93
|
+
new Map(allItems.map((item) => [item.productId, item])).values()
|
|
94
|
+
);
|
|
95
|
+
setIapProducts(uniqueItems);
|
|
96
|
+
}
|
|
97
|
+
} catch (err) {
|
|
98
|
+
console.warn('IAP Error:', err);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
if (products && products.length > 0) {
|
|
103
|
+
// Collect all SKUs from all products for current platform
|
|
104
|
+
const allSkus = products.flatMap((p) => {
|
|
105
|
+
if (Array.isArray(p.SKus)) {
|
|
106
|
+
return p.SKus;
|
|
107
|
+
}
|
|
108
|
+
const skusObj = p.SKus as PlatformSku;
|
|
109
|
+
const skus = Platform.select({
|
|
110
|
+
ios: skusObj.ios,
|
|
111
|
+
android: skusObj.android,
|
|
112
|
+
});
|
|
113
|
+
return skus || [];
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
if (allSkus.length > 0) {
|
|
117
|
+
fetchIapProducts(allSkus);
|
|
118
|
+
}
|
|
119
|
+
} else if (subscriptionSkus) {
|
|
51
120
|
const skus = Platform.select({
|
|
52
121
|
ios: subscriptionSkus.ios,
|
|
53
122
|
android: subscriptionSkus.android,
|
|
54
123
|
});
|
|
55
124
|
|
|
56
125
|
if (skus && skus.length > 0) {
|
|
57
|
-
|
|
58
|
-
try {
|
|
59
|
-
await initConnection();
|
|
60
|
-
if (!isMounted) return;
|
|
61
|
-
|
|
62
|
-
const products = await getSubscriptions({ skus });
|
|
63
|
-
if (isMounted) {
|
|
64
|
-
setIapProducts(products);
|
|
65
|
-
}
|
|
66
|
-
} catch (err) {
|
|
67
|
-
console.warn('IAP Error:', err);
|
|
68
|
-
}
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
fetchProducts();
|
|
126
|
+
fetchIapProducts(skus);
|
|
72
127
|
}
|
|
73
128
|
}
|
|
74
129
|
|
|
75
130
|
return () => {
|
|
76
131
|
isMounted = false;
|
|
77
|
-
if (subscriptionSkus) {
|
|
132
|
+
if (subscriptionSkus || products) {
|
|
78
133
|
endConnection();
|
|
79
134
|
}
|
|
80
135
|
};
|
|
81
|
-
}, [subscriptionSkus]);
|
|
136
|
+
}, [subscriptionSkus, products]);
|
|
82
137
|
|
|
83
138
|
const displayPlans = useMemo(() => {
|
|
139
|
+
// New Configuration Mode
|
|
140
|
+
if (products && products.length > 0) {
|
|
141
|
+
const mappedPlans = products.map((config) => {
|
|
142
|
+
// Find if any of the product's SKUs matches a fetched IAP product
|
|
143
|
+
let targetSkus: string[] = [];
|
|
144
|
+
if (Array.isArray(config.SKus)) {
|
|
145
|
+
targetSkus = config.SKus;
|
|
146
|
+
} else {
|
|
147
|
+
const skusObj = config.SKus as PlatformSku;
|
|
148
|
+
targetSkus =
|
|
149
|
+
Platform.select({
|
|
150
|
+
ios: skusObj.ios,
|
|
151
|
+
android: skusObj.android,
|
|
152
|
+
}) || [];
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
const iapProduct = iapProducts.find((p) =>
|
|
156
|
+
targetSkus.includes(p.productId)
|
|
157
|
+
);
|
|
158
|
+
|
|
159
|
+
let price = '...'; // Default loading state
|
|
160
|
+
let id = targetSkus[0] || ''; // Default ID to first SKU
|
|
161
|
+
|
|
162
|
+
if (iapProduct) {
|
|
163
|
+
id = iapProduct.productId;
|
|
164
|
+
if (Platform.OS === 'ios') {
|
|
165
|
+
price = (iapProduct as any).localizedPrice || price;
|
|
166
|
+
} else if (Platform.OS === 'android') {
|
|
167
|
+
const offer = (iapProduct as any).subscriptionOfferDetails?.[0];
|
|
168
|
+
price =
|
|
169
|
+
offer?.pricingPhases?.pricingPhaseList?.[0]?.formattedPrice ||
|
|
170
|
+
(iapProduct as any).localizedPrice ||
|
|
171
|
+
price;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
return {
|
|
176
|
+
id,
|
|
177
|
+
title: config.title,
|
|
178
|
+
price,
|
|
179
|
+
// features with typo 'featues' mapped to correct prop 'features'
|
|
180
|
+
features: config.featues,
|
|
181
|
+
interval: '', // Could be inferred from IAP if needed
|
|
182
|
+
sortOrder: config.sortOrder,
|
|
183
|
+
};
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
// Sort based on sortOrder
|
|
187
|
+
return mappedPlans.sort((a, b) => {
|
|
188
|
+
if (
|
|
189
|
+
typeof a.sortOrder === 'number' &&
|
|
190
|
+
typeof b.sortOrder === 'number'
|
|
191
|
+
) {
|
|
192
|
+
return a.sortOrder - b.sortOrder;
|
|
193
|
+
}
|
|
194
|
+
return String(a.sortOrder).localeCompare(String(b.sortOrder));
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// Legacy Mode
|
|
84
199
|
if (iapProducts.length === 0) return plans;
|
|
85
200
|
|
|
86
201
|
return plans.map((plan) => {
|
|
@@ -104,7 +219,7 @@ function OnboardingPaywallPanel({
|
|
|
104
219
|
}
|
|
105
220
|
return plan;
|
|
106
221
|
});
|
|
107
|
-
}, [plans, iapProducts]);
|
|
222
|
+
}, [products, plans, iapProducts]);
|
|
108
223
|
|
|
109
224
|
const selectedPlan = displayPlans.find((p) => p.id === selectedPlanId);
|
|
110
225
|
|
|
@@ -197,39 +312,95 @@ function OnboardingPaywallPanel({
|
|
|
197
312
|
|
|
198
313
|
const renderButton = () => {
|
|
199
314
|
const handlePress = async () => {
|
|
200
|
-
|
|
315
|
+
console.log('OnboardingPaywallPanel: handlePress', { selectedPlanId });
|
|
316
|
+
if ((subscriptionSkus || products) && selectedPlanId) {
|
|
201
317
|
try {
|
|
202
318
|
const iapProduct = iapProducts.find(
|
|
203
319
|
(p) => p.productId === selectedPlanId
|
|
204
320
|
);
|
|
205
321
|
if (iapProduct) {
|
|
206
|
-
//
|
|
207
|
-
//
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
sku: selectedPlanId,
|
|
216
|
-
...(offerToken && {
|
|
217
|
-
subscriptionOffers: [{ sku: selectedPlanId, offerToken }],
|
|
218
|
-
}),
|
|
322
|
+
// Determine if it's a subscription or one-time purchase
|
|
323
|
+
// Subscriptions usually have 'subscriptionPeriodNumberIOS' or 'subscriptionOfferDetails'
|
|
324
|
+
const isSubscription =
|
|
325
|
+
'subscriptionPeriodNumberIOS' in iapProduct ||
|
|
326
|
+
'subscriptionOfferDetails' in iapProduct;
|
|
327
|
+
|
|
328
|
+
console.log('OnboardingPaywallPanel: Processing purchase', {
|
|
329
|
+
isSubscription,
|
|
330
|
+
productId: iapProduct.productId,
|
|
219
331
|
});
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
332
|
+
|
|
333
|
+
if (isSubscription) {
|
|
334
|
+
// For Android, we might need offerToken if available
|
|
335
|
+
let offerToken;
|
|
336
|
+
if (Platform.OS === 'android') {
|
|
337
|
+
offerToken = (iapProduct as any).subscriptionOfferDetails?.[0]
|
|
338
|
+
?.offerToken;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
console.log('OnboardingPaywallPanel: Requesting subscription', {
|
|
342
|
+
sku: selectedPlanId,
|
|
343
|
+
offerToken,
|
|
344
|
+
});
|
|
345
|
+
await requestSubscription({
|
|
346
|
+
sku: selectedPlanId,
|
|
347
|
+
...(offerToken && {
|
|
348
|
+
subscriptionOffers: [{ sku: selectedPlanId, offerToken }],
|
|
349
|
+
}),
|
|
350
|
+
});
|
|
351
|
+
} else {
|
|
352
|
+
console.log(
|
|
353
|
+
'OnboardingPaywallPanel: Requesting one-time purchase',
|
|
354
|
+
{ sku: selectedPlanId }
|
|
355
|
+
);
|
|
356
|
+
await requestPurchase({
|
|
357
|
+
sku: selectedPlanId,
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
} else {
|
|
361
|
+
// Fallback if product not found in fetched list but ID exists
|
|
362
|
+
// Try subscription first as default legacy behavior
|
|
363
|
+
console.log(
|
|
364
|
+
'OnboardingPaywallPanel: Product not in IAP list, attempting fallback purchase',
|
|
365
|
+
selectedPlanId
|
|
366
|
+
);
|
|
367
|
+
try {
|
|
368
|
+
console.log(
|
|
369
|
+
'OnboardingPaywallPanel: Fallback - attempting requestSubscription',
|
|
370
|
+
selectedPlanId
|
|
371
|
+
);
|
|
372
|
+
await requestSubscription({ sku: selectedPlanId });
|
|
373
|
+
} catch (subErr) {
|
|
374
|
+
console.warn(
|
|
375
|
+
'OnboardingPaywallPanel: Fallback requestSubscription failed',
|
|
376
|
+
subErr
|
|
377
|
+
);
|
|
378
|
+
console.log(
|
|
379
|
+
'OnboardingPaywallPanel: Fallback - attempting requestPurchase',
|
|
380
|
+
selectedPlanId
|
|
381
|
+
);
|
|
382
|
+
try {
|
|
383
|
+
await requestPurchase({ sku: selectedPlanId });
|
|
384
|
+
} catch (purchErr) {
|
|
385
|
+
console.warn(
|
|
386
|
+
'OnboardingPaywallPanel: Fallback requestPurchase failed',
|
|
387
|
+
purchErr
|
|
388
|
+
);
|
|
389
|
+
throw purchErr;
|
|
390
|
+
}
|
|
391
|
+
}
|
|
223
392
|
}
|
|
224
393
|
} catch (err) {
|
|
225
|
-
console.
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
394
|
+
console.warn('Purchase Error:', err);
|
|
395
|
+
if (typeof err === 'object') {
|
|
396
|
+
console.warn(
|
|
397
|
+
'Purchase Error Details:',
|
|
398
|
+
JSON.stringify(err, null, 2)
|
|
399
|
+
);
|
|
400
|
+
}
|
|
229
401
|
return;
|
|
230
402
|
}
|
|
231
403
|
}
|
|
232
|
-
|
|
233
404
|
onPressContinue(selectedPlanId);
|
|
234
405
|
};
|
|
235
406
|
|
|
@@ -329,22 +500,22 @@ const createStyles = (theme: Theme) =>
|
|
|
329
500
|
},
|
|
330
501
|
sheetContainer: {
|
|
331
502
|
flex: 1,
|
|
332
|
-
marginTop: -
|
|
503
|
+
marginTop: -24,
|
|
333
504
|
backgroundColor: theme.bg.secondary,
|
|
334
|
-
borderTopLeftRadius:
|
|
335
|
-
borderTopRightRadius:
|
|
336
|
-
overflow: '
|
|
505
|
+
borderTopLeftRadius: 30,
|
|
506
|
+
borderTopRightRadius: 30,
|
|
507
|
+
overflow: 'scroll',
|
|
337
508
|
},
|
|
338
509
|
container: {
|
|
339
510
|
flex: 1,
|
|
340
511
|
},
|
|
341
512
|
contentContainer: {
|
|
342
|
-
paddingBottom:
|
|
513
|
+
paddingBottom: 24,
|
|
343
514
|
},
|
|
344
515
|
footerContainer: {
|
|
345
|
-
paddingHorizontal:
|
|
346
|
-
|
|
347
|
-
paddingTop:
|
|
516
|
+
paddingHorizontal: 8,
|
|
517
|
+
marginBottom: 40,
|
|
518
|
+
paddingTop: 4,
|
|
348
519
|
backgroundColor: theme.bg.secondary,
|
|
349
520
|
},
|
|
350
521
|
contentWrapper: {
|
|
@@ -257,6 +257,11 @@ export interface OnboardingProps {
|
|
|
257
257
|
paywallPanel?: OnboardingPaywallPanelConfig;
|
|
258
258
|
}
|
|
259
259
|
|
|
260
|
+
export interface PlatformSku {
|
|
261
|
+
ios?: string[];
|
|
262
|
+
android?: string[];
|
|
263
|
+
}
|
|
264
|
+
|
|
260
265
|
export interface PaywallPlan {
|
|
261
266
|
id: string;
|
|
262
267
|
title: string;
|
|
@@ -265,6 +270,23 @@ export interface PaywallPlan {
|
|
|
265
270
|
features?: string[];
|
|
266
271
|
}
|
|
267
272
|
|
|
273
|
+
/**
|
|
274
|
+
* Simplified configuration for a single paywall product/plan.
|
|
275
|
+
*/
|
|
276
|
+
export interface PaywallProductConfig {
|
|
277
|
+
/** SKUs for different platforms. */
|
|
278
|
+
SKus: PlatformSku | string[];
|
|
279
|
+
|
|
280
|
+
/** Main product title/name. */
|
|
281
|
+
title: string;
|
|
282
|
+
|
|
283
|
+
/** Array of product features. */
|
|
284
|
+
featues: string[];
|
|
285
|
+
|
|
286
|
+
/** Numeric or alphanumeric sorting preference. */
|
|
287
|
+
sortOrder: number | string;
|
|
288
|
+
}
|
|
289
|
+
|
|
268
290
|
/**
|
|
269
291
|
* Props for the paywall panel.
|
|
270
292
|
*/
|
|
@@ -278,8 +300,17 @@ export interface OnboardingPaywallPanelProps {
|
|
|
278
300
|
/** Subtitle content. */
|
|
279
301
|
subtitle?: string | ReactNode;
|
|
280
302
|
|
|
281
|
-
/**
|
|
282
|
-
|
|
303
|
+
/**
|
|
304
|
+
* List of plans to display.
|
|
305
|
+
* Required if `products` is not provided.
|
|
306
|
+
*/
|
|
307
|
+
plans?: PaywallPlan[];
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* Simplified configuration for paywall products.
|
|
311
|
+
* If provided, handles fetching and displaying products automatically.
|
|
312
|
+
*/
|
|
313
|
+
products?: PaywallProductConfig[];
|
|
283
314
|
|
|
284
315
|
/**
|
|
285
316
|
* Button content. Either a simple string label or a render function.
|
|
@@ -306,10 +337,7 @@ export interface OnboardingPaywallPanelProps {
|
|
|
306
337
|
* If provided, the component will attempt to fetch product details from the store
|
|
307
338
|
* using react-native-iap and handle purchases.
|
|
308
339
|
*/
|
|
309
|
-
subscriptionSkus?:
|
|
310
|
-
ios?: string[];
|
|
311
|
-
android?: string[];
|
|
312
|
-
};
|
|
340
|
+
subscriptionSkus?: PlatformSku;
|
|
313
341
|
}
|
|
314
342
|
|
|
315
343
|
type OnboardingPaywallPanelConfig =
|