react-native-purchases-ui 8.0.0-beta.1 → 8.0.1
Sign up to get free protection for your applications and to get access to all the features.
- package/RNPaywalls.podspec +2 -2
- package/android/build.gradle +2 -2
- package/android/src/main/java/com/revenuecat/purchases/react/ui/BasePaywallViewManager.kt +79 -58
- package/android/src/main/java/com/revenuecat/purchases/react/ui/FontAssetManager.kt +60 -16
- package/android/src/main/java/com/revenuecat/purchases/react/ui/{PaywallEvent.kt → PaywallEventName.kt} +6 -3
- package/android/src/main/java/com/revenuecat/purchases/react/ui/PaywallFooterViewManager.kt +20 -9
- package/android/src/main/java/com/revenuecat/purchases/react/ui/PaywallViewManager.kt +9 -3
- package/android/src/main/java/com/revenuecat/purchases/react/ui/RNPaywallsModule.kt +14 -2
- package/android/src/main/java/com/revenuecat/purchases/react/ui/ViewExtensions.kt +7 -0
- package/android/src/main/java/com/revenuecat/purchases/react/ui/events/OnDismissEvent.kt +13 -0
- package/android/src/main/java/com/revenuecat/purchases/react/ui/events/OnMeasureEvent.kt +17 -0
- package/android/src/main/java/com/revenuecat/purchases/react/ui/events/OnPurchaseCancelledEvent.kt +13 -0
- package/android/src/main/java/com/revenuecat/purchases/react/ui/events/OnPurchaseCompletedEvent.kt +18 -0
- package/android/src/main/java/com/revenuecat/purchases/react/ui/events/OnPurchaseErrorEvent.kt +14 -0
- package/android/src/main/java/com/revenuecat/purchases/react/ui/events/OnPurchaseStartedEvent.kt +16 -0
- package/android/src/main/java/com/revenuecat/purchases/react/ui/events/OnRestoreCompletedEvent.kt +14 -0
- package/android/src/main/java/com/revenuecat/purchases/react/ui/events/OnRestoreErrorEvent.kt +14 -0
- package/android/src/main/java/com/revenuecat/purchases/react/ui/events/OnRestoreStartedEvent.kt +13 -0
- package/android/src/main/java/com/revenuecat/purchases/react/ui/events/PaywallEvent.kt +34 -0
- package/ios/PaywallViewWrapper.m +24 -1
- package/ios/RNPaywalls.m +21 -18
- package/lib/commonjs/index.js +19 -9
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/index.js +18 -8
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/index.d.ts +14 -2
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +13 -12
- package/src/index.tsx +39 -7
@@ -0,0 +1,14 @@
|
|
1
|
+
package com.revenuecat.purchases.react.ui.events
|
2
|
+
|
3
|
+
import com.revenuecat.purchases.react.ui.PaywallEventKey
|
4
|
+
import com.revenuecat.purchases.react.ui.PaywallEventName
|
5
|
+
|
6
|
+
internal class OnRestoreErrorEvent(
|
7
|
+
surfaceId: Int,
|
8
|
+
viewTag: Int,
|
9
|
+
private val error: Map<String, Any?>
|
10
|
+
) : PaywallEvent<OnRestoreErrorEvent>(surfaceId, viewTag) {
|
11
|
+
override fun getPaywallEventName() = PaywallEventName.ON_RESTORE_ERROR
|
12
|
+
|
13
|
+
override fun getPayload() = mapOf(PaywallEventKey.ERROR to error)
|
14
|
+
}
|
package/android/src/main/java/com/revenuecat/purchases/react/ui/events/OnRestoreStartedEvent.kt
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
package com.revenuecat.purchases.react.ui.events
|
2
|
+
|
3
|
+
import com.revenuecat.purchases.react.ui.PaywallEventKey
|
4
|
+
import com.revenuecat.purchases.react.ui.PaywallEventName
|
5
|
+
|
6
|
+
internal class OnRestoreStartedEvent(
|
7
|
+
surfaceId: Int,
|
8
|
+
viewTag: Int,
|
9
|
+
) : PaywallEvent<OnRestoreStartedEvent>(surfaceId, viewTag) {
|
10
|
+
override fun getPaywallEventName() = PaywallEventName.ON_RESTORE_STARTED
|
11
|
+
|
12
|
+
override fun getPayload(): Map<PaywallEventKey, Map<String, Any?>> = emptyMap()
|
13
|
+
}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
package com.revenuecat.purchases.react.ui.events
|
2
|
+
|
3
|
+
import com.facebook.react.bridge.WritableMap
|
4
|
+
import com.facebook.react.bridge.WritableNativeMap
|
5
|
+
import com.facebook.react.uimanager.events.Event
|
6
|
+
import com.revenuecat.purchases.react.ui.PaywallEventKey
|
7
|
+
import com.revenuecat.purchases.react.ui.PaywallEventName
|
8
|
+
import com.revenuecat.purchases.react.ui.RNPurchasesConverters
|
9
|
+
|
10
|
+
internal abstract class PaywallEvent<T>(
|
11
|
+
surfaceId: Int,
|
12
|
+
viewTag: Int,
|
13
|
+
) : Event<PaywallEvent<T>>(surfaceId, viewTag) {
|
14
|
+
|
15
|
+
abstract fun getPaywallEventName(): PaywallEventName
|
16
|
+
|
17
|
+
abstract fun getPayload(): Map<PaywallEventKey, Map<String, Any?>>
|
18
|
+
|
19
|
+
override fun getEventName(): String {
|
20
|
+
return getPaywallEventName().eventName
|
21
|
+
}
|
22
|
+
|
23
|
+
override fun getEventData(): WritableMap {
|
24
|
+
val convertedPayload = getPayload().let { payload ->
|
25
|
+
WritableNativeMap().apply {
|
26
|
+
payload.forEach { (key, value) ->
|
27
|
+
putMap(key.key, RNPurchasesConverters.convertMapToWriteableMap(value))
|
28
|
+
}
|
29
|
+
}
|
30
|
+
}
|
31
|
+
|
32
|
+
return convertedPayload
|
33
|
+
}
|
34
|
+
}
|
package/ios/PaywallViewWrapper.m
CHANGED
@@ -7,6 +7,7 @@
|
|
7
7
|
|
8
8
|
#import "PaywallViewWrapper.h"
|
9
9
|
#import "UIView+Extensions.h"
|
10
|
+
#import "UIView+React.h"
|
10
11
|
|
11
12
|
@import PurchasesHybridCommonUI;
|
12
13
|
@import RevenueCatUI;
|
@@ -36,9 +37,20 @@ API_AVAILABLE(ios(15.0))
|
|
36
37
|
return self;
|
37
38
|
}
|
38
39
|
|
40
|
+
|
41
|
+
- (void)reactSetFrame:(CGRect)frame
|
42
|
+
{
|
43
|
+
NSLog(@"RNPaywalls - reactSetFrame: %@", NSStringFromCGRect(frame));
|
44
|
+
|
45
|
+
[super reactSetFrame: frame];
|
46
|
+
}
|
47
|
+
|
39
48
|
- (void)layoutSubviews {
|
40
49
|
[super layoutSubviews];
|
41
50
|
|
51
|
+
CGSize size = self.bounds.size;
|
52
|
+
NSLog(@"RNPaywalls - Size on layoutSubviews: %@", NSStringFromCGSize(size));
|
53
|
+
|
42
54
|
// Need to wait for this view to be in the hierarchy to look for the parent UIVC.
|
43
55
|
// This is required to add a SwiftUI `UIHostingController` to the hierarchy in a way that allows
|
44
56
|
// UIKit to read properties from the environment, like traits and safe area.
|
@@ -50,6 +62,7 @@ API_AVAILABLE(ios(15.0))
|
|
50
62
|
[self addSubview:self.paywallViewController.view];
|
51
63
|
[self.paywallViewController didMoveToParentViewController:parentController];
|
52
64
|
|
65
|
+
NSLog(@"RNPaywalls - Activating constraints");
|
53
66
|
[NSLayoutConstraint activateConstraints:@[
|
54
67
|
[self.paywallViewController.view.topAnchor constraintEqualToAnchor:self.topAnchor],
|
55
68
|
[self.paywallViewController.view.bottomAnchor constraintEqualToAnchor:self.bottomAnchor],
|
@@ -76,6 +89,12 @@ API_AVAILABLE(ios(15.0))
|
|
76
89
|
if (fontFamily && [fontFamily isKindOfClass:[NSString class]] && fontFamily.length > 0) {
|
77
90
|
[self.paywallViewController updateFontWithFontName:fontFamily];
|
78
91
|
}
|
92
|
+
|
93
|
+
NSNumber *displayCloseButtonValue = options[@"displayCloseButton"];
|
94
|
+
BOOL displayCloseButton = [displayCloseButtonValue isKindOfClass:[NSNumber class]] ? [displayCloseButtonValue boolValue] : NO;
|
95
|
+
if (displayCloseButton) {
|
96
|
+
[self.paywallViewController updateWithDisplayCloseButton:displayCloseButton];
|
97
|
+
}
|
79
98
|
} else {
|
80
99
|
NSLog(@"Error: attempted to present paywalls on unsupported iOS version.");
|
81
100
|
}
|
@@ -126,8 +145,12 @@ didFailRestoringWithErrorDictionary:(NSDictionary *)errorDictionary API_AVAILABL
|
|
126
145
|
});
|
127
146
|
}
|
128
147
|
|
129
|
-
- (void)
|
148
|
+
- (void)paywallViewControllerRequestedDismissal:(RCPaywallViewController *)controller API_AVAILABLE(ios(15.0)) {
|
130
149
|
self.onDismiss(nil);
|
131
150
|
}
|
132
151
|
|
152
|
+
- (void)paywallViewController:(RCPaywallViewController *)controller didChangeSizeTo:(CGSize)size API_AVAILABLE(ios(15.0)) {
|
153
|
+
NSLog(@"RNPaywalls - Paywall view wrapper did change size to: %@", NSStringFromCGSize(size));
|
154
|
+
}
|
155
|
+
|
133
156
|
@end
|
package/ios/RNPaywalls.m
CHANGED
@@ -63,19 +63,21 @@ RCT_EXPORT_MODULE();
|
|
63
63
|
|
64
64
|
RCT_EXPORT_METHOD(presentPaywall:(nullable NSString *)offeringIdentifier
|
65
65
|
shouldDisplayCloseButton:(BOOL)displayCloseButton
|
66
|
+
withFontFamily:(nullable NSString *)fontFamily
|
66
67
|
withResolve:(RCTPromiseResolveBlock)resolve
|
67
68
|
reject:(RCTPromiseRejectBlock)reject) {
|
68
69
|
if (@available(iOS 15.0, *)) {
|
70
|
+
NSMutableDictionary *options = [NSMutableDictionary dictionary];
|
69
71
|
if (offeringIdentifier != nil) {
|
70
|
-
[
|
71
|
-
displayCloseButton:displayCloseButton
|
72
|
-
paywallResultHandler:^(NSString *result) {
|
73
|
-
resolve(result);
|
74
|
-
}];
|
75
|
-
return;
|
72
|
+
options[PaywallOptionsKeys.offeringIdentifier] = offeringIdentifier;
|
76
73
|
}
|
77
|
-
[
|
78
|
-
|
74
|
+
options[PaywallOptionsKeys.displayCloseButton] = @(displayCloseButton);
|
75
|
+
if (fontFamily) {
|
76
|
+
options[PaywallOptionsKeys.fontName] = fontFamily;
|
77
|
+
}
|
78
|
+
|
79
|
+
[self.paywalls presentPaywallWithOptions:options
|
80
|
+
paywallResultHandler:^(NSString *result) {
|
79
81
|
resolve(result);
|
80
82
|
}];
|
81
83
|
} else {
|
@@ -86,21 +88,22 @@ RCT_EXPORT_METHOD(presentPaywall:(nullable NSString *)offeringIdentifier
|
|
86
88
|
RCT_EXPORT_METHOD(presentPaywallIfNeeded:(NSString *)requiredEntitlementIdentifier
|
87
89
|
withOfferingIdentifier:(nullable NSString *)offeringIdentifier
|
88
90
|
shouldDisplayCloseButton:(BOOL)displayCloseButton
|
91
|
+
withFontFamily:(nullable NSString *)fontFamily
|
89
92
|
withResolve:(RCTPromiseResolveBlock)resolve
|
90
93
|
reject:(RCTPromiseRejectBlock)reject) {
|
91
94
|
if (@available(iOS 15.0, *)) {
|
95
|
+
NSMutableDictionary *options = [NSMutableDictionary dictionary];
|
92
96
|
if (offeringIdentifier != nil) {
|
93
|
-
[
|
94
|
-
offeringIdentifier:offeringIdentifier
|
95
|
-
displayCloseButton:displayCloseButton
|
96
|
-
paywallResultHandler:^(NSString *result) {
|
97
|
-
resolve(result);
|
98
|
-
}];
|
99
|
-
return;
|
97
|
+
options[PaywallOptionsKeys.offeringIdentifier] = offeringIdentifier;
|
100
98
|
}
|
101
|
-
[
|
102
|
-
|
103
|
-
|
99
|
+
options[PaywallOptionsKeys.requiredEntitlementIdentifier] = requiredEntitlementIdentifier;
|
100
|
+
options[PaywallOptionsKeys.displayCloseButton] = @(displayCloseButton);
|
101
|
+
if (fontFamily) {
|
102
|
+
options[PaywallOptionsKeys.fontName] = fontFamily;
|
103
|
+
}
|
104
|
+
|
105
|
+
[self.paywalls presentPaywallIfNeededWithOptions:options
|
106
|
+
paywallResultHandler:^(NSString *result) {
|
104
107
|
resolve(result);
|
105
108
|
}];
|
106
109
|
} else {
|
package/lib/commonjs/index.js
CHANGED
@@ -14,7 +14,7 @@ var _reactNative = require("react-native");
|
|
14
14
|
var _purchasesTypescriptInternal = require("@revenuecat/purchases-typescript-internal");
|
15
15
|
var _react = _interopRequireWildcard(require("react"));
|
16
16
|
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); }
|
17
|
-
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 &&
|
17
|
+
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; }
|
18
18
|
const LINKING_ERROR = `The package 'react-native-purchases-ui' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
|
19
19
|
ios: "- You have run 'pod install'\n",
|
20
20
|
default: ''
|
@@ -57,9 +57,10 @@ class RevenueCatUI {
|
|
57
57
|
*/
|
58
58
|
static presentPaywall({
|
59
59
|
offering,
|
60
|
-
displayCloseButton = RevenueCatUI.Defaults.PRESENT_PAYWALL_DISPLAY_CLOSE_BUTTON
|
60
|
+
displayCloseButton = RevenueCatUI.Defaults.PRESENT_PAYWALL_DISPLAY_CLOSE_BUTTON,
|
61
|
+
fontFamily
|
61
62
|
} = {}) {
|
62
|
-
return RNPaywalls.presentPaywall((offering === null || offering === void 0 ? void 0 : offering.identifier) ?? null, displayCloseButton);
|
63
|
+
return RNPaywalls.presentPaywall((offering === null || offering === void 0 ? void 0 : offering.identifier) ?? null, displayCloseButton, fontFamily);
|
63
64
|
}
|
64
65
|
|
65
66
|
/**
|
@@ -78,9 +79,10 @@ class RevenueCatUI {
|
|
78
79
|
static presentPaywallIfNeeded({
|
79
80
|
requiredEntitlementIdentifier,
|
80
81
|
offering,
|
81
|
-
displayCloseButton = RevenueCatUI.Defaults.PRESENT_PAYWALL_DISPLAY_CLOSE_BUTTON
|
82
|
+
displayCloseButton = RevenueCatUI.Defaults.PRESENT_PAYWALL_DISPLAY_CLOSE_BUTTON,
|
83
|
+
fontFamily
|
82
84
|
}) {
|
83
|
-
return RNPaywalls.presentPaywallIfNeeded(requiredEntitlementIdentifier, (offering === null || offering === void 0 ? void 0 : offering.identifier) ?? null, displayCloseButton);
|
85
|
+
return RNPaywalls.presentPaywallIfNeeded(requiredEntitlementIdentifier, (offering === null || offering === void 0 ? void 0 : offering.identifier) ?? null, displayCloseButton, fontFamily);
|
84
86
|
}
|
85
87
|
static Paywall = ({
|
86
88
|
style,
|
@@ -127,6 +129,7 @@ class RevenueCatUI {
|
|
127
129
|
// safe area insets change. Not adding this extra padding on iOS will cause the content of the scrollview
|
128
130
|
// to be hidden behind the rounded corners of the paywall.
|
129
131
|
const [paddingBottom, setPaddingBottom] = (0, _react.useState)(20);
|
132
|
+
const [height, setHeight] = (0, _react.useState)(0);
|
130
133
|
(0, _react.useEffect)(() => {
|
131
134
|
const handleSafeAreaInsetsChange = ({
|
132
135
|
bottom
|
@@ -148,9 +151,15 @@ class RevenueCatUI {
|
|
148
151
|
paddingBottom
|
149
152
|
}
|
150
153
|
}, children), /*#__PURE__*/_react.default.createElement(InternalPaywallFooterView, {
|
151
|
-
style: {
|
152
|
-
|
153
|
-
|
154
|
+
style: _reactNative.Platform.select({
|
155
|
+
ios: {
|
156
|
+
marginTop: -20
|
157
|
+
},
|
158
|
+
android: {
|
159
|
+
marginTop: -20,
|
160
|
+
height
|
161
|
+
}
|
162
|
+
}),
|
154
163
|
options: options,
|
155
164
|
onPurchaseStarted: event => onPurchaseStarted && onPurchaseStarted(event.nativeEvent),
|
156
165
|
onPurchaseCompleted: event => onPurchaseCompleted && onPurchaseCompleted(event.nativeEvent),
|
@@ -159,7 +168,8 @@ class RevenueCatUI {
|
|
159
168
|
onRestoreStarted: () => onRestoreStarted && onRestoreStarted(),
|
160
169
|
onRestoreCompleted: event => onRestoreCompleted && onRestoreCompleted(event.nativeEvent),
|
161
170
|
onRestoreError: event => onRestoreError && onRestoreError(event.nativeEvent),
|
162
|
-
onDismiss: () => onDismiss && onDismiss()
|
171
|
+
onDismiss: () => onDismiss && onDismiss(),
|
172
|
+
onMeasure: event => setHeight(event.nativeEvent.measurements.height)
|
163
173
|
}));
|
164
174
|
};
|
165
175
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_purchasesTypescriptInternal","_react","_interopRequireWildcard","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","
|
1
|
+
{"version":3,"names":["_reactNative","require","_purchasesTypescriptInternal","_react","_interopRequireWildcard","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","LINKING_ERROR","Platform","select","ios","RNPaywalls","NativeModules","Error","eventEmitter","NativeEventEmitter","InternalPaywall","UIManager","getViewManagerConfig","requireNativeComponent","InternalPaywallFooterView","RevenueCatUI","Defaults","PRESENT_PAYWALL_DISPLAY_CLOSE_BUTTON","PAYWALL_RESULT","presentPaywall","offering","displayCloseButton","fontFamily","identifier","presentPaywallIfNeeded","requiredEntitlementIdentifier","Paywall","style","children","options","onPurchaseStarted","onPurchaseCompleted","onPurchaseError","onPurchaseCancelled","onRestoreStarted","onRestoreCompleted","onRestoreError","onDismiss","createElement","event","nativeEvent","flex","PaywallFooterContainerView","paddingBottom","setPaddingBottom","useState","height","setHeight","useEffect","handleSafeAreaInsetsChange","bottom","subscription","addListener","remove","View","ScrollView","contentContainerStyle","flexGrow","marginTop","android","onMeasure","measurements","exports"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
@@ -44,9 +44,10 @@ export default class RevenueCatUI {
|
|
44
44
|
*/
|
45
45
|
static presentPaywall({
|
46
46
|
offering,
|
47
|
-
displayCloseButton = RevenueCatUI.Defaults.PRESENT_PAYWALL_DISPLAY_CLOSE_BUTTON
|
47
|
+
displayCloseButton = RevenueCatUI.Defaults.PRESENT_PAYWALL_DISPLAY_CLOSE_BUTTON,
|
48
|
+
fontFamily
|
48
49
|
} = {}) {
|
49
|
-
return RNPaywalls.presentPaywall((offering === null || offering === void 0 ? void 0 : offering.identifier) ?? null, displayCloseButton);
|
50
|
+
return RNPaywalls.presentPaywall((offering === null || offering === void 0 ? void 0 : offering.identifier) ?? null, displayCloseButton, fontFamily);
|
50
51
|
}
|
51
52
|
|
52
53
|
/**
|
@@ -65,9 +66,10 @@ export default class RevenueCatUI {
|
|
65
66
|
static presentPaywallIfNeeded({
|
66
67
|
requiredEntitlementIdentifier,
|
67
68
|
offering,
|
68
|
-
displayCloseButton = RevenueCatUI.Defaults.PRESENT_PAYWALL_DISPLAY_CLOSE_BUTTON
|
69
|
+
displayCloseButton = RevenueCatUI.Defaults.PRESENT_PAYWALL_DISPLAY_CLOSE_BUTTON,
|
70
|
+
fontFamily
|
69
71
|
}) {
|
70
|
-
return RNPaywalls.presentPaywallIfNeeded(requiredEntitlementIdentifier, (offering === null || offering === void 0 ? void 0 : offering.identifier) ?? null, displayCloseButton);
|
72
|
+
return RNPaywalls.presentPaywallIfNeeded(requiredEntitlementIdentifier, (offering === null || offering === void 0 ? void 0 : offering.identifier) ?? null, displayCloseButton, fontFamily);
|
71
73
|
}
|
72
74
|
static Paywall = ({
|
73
75
|
style,
|
@@ -114,6 +116,7 @@ export default class RevenueCatUI {
|
|
114
116
|
// safe area insets change. Not adding this extra padding on iOS will cause the content of the scrollview
|
115
117
|
// to be hidden behind the rounded corners of the paywall.
|
116
118
|
const [paddingBottom, setPaddingBottom] = useState(20);
|
119
|
+
const [height, setHeight] = useState(0);
|
117
120
|
useEffect(() => {
|
118
121
|
const handleSafeAreaInsetsChange = ({
|
119
122
|
bottom
|
@@ -135,9 +138,15 @@ export default class RevenueCatUI {
|
|
135
138
|
paddingBottom
|
136
139
|
}
|
137
140
|
}, children), /*#__PURE__*/React.createElement(InternalPaywallFooterView, {
|
138
|
-
style: {
|
139
|
-
|
140
|
-
|
141
|
+
style: Platform.select({
|
142
|
+
ios: {
|
143
|
+
marginTop: -20
|
144
|
+
},
|
145
|
+
android: {
|
146
|
+
marginTop: -20,
|
147
|
+
height
|
148
|
+
}
|
149
|
+
}),
|
141
150
|
options: options,
|
142
151
|
onPurchaseStarted: event => onPurchaseStarted && onPurchaseStarted(event.nativeEvent),
|
143
152
|
onPurchaseCompleted: event => onPurchaseCompleted && onPurchaseCompleted(event.nativeEvent),
|
@@ -146,7 +155,8 @@ export default class RevenueCatUI {
|
|
146
155
|
onRestoreStarted: () => onRestoreStarted && onRestoreStarted(),
|
147
156
|
onRestoreCompleted: event => onRestoreCompleted && onRestoreCompleted(event.nativeEvent),
|
148
157
|
onRestoreError: event => onRestoreError && onRestoreError(event.nativeEvent),
|
149
|
-
onDismiss: () => onDismiss && onDismiss()
|
158
|
+
onDismiss: () => onDismiss && onDismiss(),
|
159
|
+
onMeasure: event => setHeight(event.nativeEvent.measurements.height)
|
150
160
|
}));
|
151
161
|
};
|
152
162
|
}
|
package/lib/module/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["NativeEventEmitter","NativeModules","Platform","requireNativeComponent","ScrollView","UIManager","View","PAYWALL_RESULT","React","useEffect","useState","LINKING_ERROR","select","ios","default","RNPaywalls","Error","eventEmitter","InternalPaywall","getViewManagerConfig","InternalPaywallFooterView","RevenueCatUI","Defaults","PRESENT_PAYWALL_DISPLAY_CLOSE_BUTTON","presentPaywall","offering","displayCloseButton","identifier","presentPaywallIfNeeded","requiredEntitlementIdentifier","Paywall","style","children","options","onPurchaseStarted","onPurchaseCompleted","onPurchaseError","onPurchaseCancelled","onRestoreStarted","onRestoreCompleted","onRestoreError","onDismiss","createElement","event","nativeEvent","flex","PaywallFooterContainerView","paddingBottom","setPaddingBottom","handleSafeAreaInsetsChange","bottom","subscription","addListener","remove","contentContainerStyle","flexGrow","marginTop"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SACEA,kBAAkB,EAClBC,aAAa,EACbC,QAAQ,EACRC,sBAAsB,EACtBC,UAAU,EAEVC,SAAS,EACTC,IAAI,QAEC,cAAc;AACrB,SAEEC,cAAc,QAGT,2CAA2C;AAClD,OAAOC,KAAK,IAAoBC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAElE,SAASH,cAAc,QAAQ,2CAA2C;AAE1E,MAAMI,aAAa,
|
1
|
+
{"version":3,"names":["NativeEventEmitter","NativeModules","Platform","requireNativeComponent","ScrollView","UIManager","View","PAYWALL_RESULT","React","useEffect","useState","LINKING_ERROR","select","ios","default","RNPaywalls","Error","eventEmitter","InternalPaywall","getViewManagerConfig","InternalPaywallFooterView","RevenueCatUI","Defaults","PRESENT_PAYWALL_DISPLAY_CLOSE_BUTTON","presentPaywall","offering","displayCloseButton","fontFamily","identifier","presentPaywallIfNeeded","requiredEntitlementIdentifier","Paywall","style","children","options","onPurchaseStarted","onPurchaseCompleted","onPurchaseError","onPurchaseCancelled","onRestoreStarted","onRestoreCompleted","onRestoreError","onDismiss","createElement","event","nativeEvent","flex","PaywallFooterContainerView","paddingBottom","setPaddingBottom","height","setHeight","handleSafeAreaInsetsChange","bottom","subscription","addListener","remove","contentContainerStyle","flexGrow","marginTop","android","onMeasure","measurements"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SACEA,kBAAkB,EAClBC,aAAa,EACbC,QAAQ,EACRC,sBAAsB,EACtBC,UAAU,EAEVC,SAAS,EACTC,IAAI,QAEC,cAAc;AACrB,SAEEC,cAAc,QAGT,2CAA2C;AAClD,OAAOC,KAAK,IAAoBC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAElE,SAASH,cAAc,QAAQ,2CAA2C;AAE1E,MAAMI,aAAa,GACjB,oFAAoF,GACpFT,QAAQ,CAACU,MAAM,CAAC;EAACC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAE,CAAC,CAAC,GACrE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,UAAU,GAAGd,aAAa,CAACc,UAAU;AAE3C,IAAI,CAACA,UAAU,EAAE;EACf,MAAM,IAAIC,KAAK,CAACL,aAAa,CAAC;AAChC;AAEA,MAAMM,YAAY,GAAG,IAAIjB,kBAAkB,CAACe,UAAU,CAAC;AAEvD,MAAMG,eAAe,GACnBb,SAAS,CAACc,oBAAoB,CAAC,SAAS,CAAC,IAAI,IAAI,GAC7ChB,sBAAsB,CAA6B,SAAS,CAAC,GAC7D,MAAM;EACN,MAAM,IAAIa,KAAK,CAACL,aAAa,CAAC;AAChC,CAAC;AAEL,MAAMS,yBAAyB,GAAGf,SAAS,CAACc,oBAAoB,CAAC,SAAS,CAAC,IAAI,IAAI,GAC/EhB,sBAAsB,CAAiC,qBAAqB,CAAC,GAC7E,MAAM;EACN,MAAM,IAAIa,KAAK,CAACL,aAAa,CAAC;AAChC,CAAC;;AAwDH;;AA2CA,eAAe,MAAMU,YAAY,CAAC;EAEhC,OAAeC,QAAQ,GAAG;IACxBC,oCAAoC,EAAE;EACxC,CAAC;;EAED;AACF;AACA;AACA;AACA;EACE,OAAchB,cAAc,GAAGA,cAAc;;EAE7C;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAciB,cAAcA,CAAC;IACEC,QAAQ;IACRC,kBAAkB,GAAGL,YAAY,CAACC,QAAQ,CAACC,oCAAoC;IAC/EI;EACoB,CAAC,GAAG,CAAC,CAAC,EAA2B;IAClF,OAAOZ,UAAU,CAACS,cAAc,CAC9B,CAAAC,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEG,UAAU,KAAI,IAAI,EAC5BF,kBAAkB,EAClBC,UACF,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAcE,sBAAsBA,CAAC;IACEC,6BAA6B;IAC7BL,QAAQ;IACRC,kBAAkB,GAAGL,YAAY,CAACC,QAAQ,CAACC,oCAAoC;IAC/EI;EAC4B,CAAC,EAA2B;IAC7F,OAAOZ,UAAU,CAACc,sBAAsB,CACtCC,6BAA6B,EAC7B,CAAAL,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEG,UAAU,KAAI,IAAI,EAC5BF,kBAAkB,EAClBC,UACF,CAAC;EACH;EAEA,OAAcI,OAAO,GAAyCA,CAAC;IACEC,KAAK;IACLC,QAAQ;IACRC,OAAO;IACPC,iBAAiB;IACjBC,mBAAmB;IACnBC,eAAe;IACfC,mBAAmB;IACnBC,gBAAgB;IAChBC,kBAAkB;IAClBC,cAAc;IACdC;EACF,CAAC,kBAC9DlC,KAAA,CAAAmC,aAAA,CAACzB,eAAe;IAACgB,OAAO,EAAEA,OAAQ;IACjBD,QAAQ,EAAEA,QAAS;IACnBE,iBAAiB,EAAGS,KAAU,IAAKT,iBAAiB,IAAIA,iBAAiB,CAACS,KAAK,CAACC,WAAW,CAAE;IAC7FT,mBAAmB,EAAGQ,KAAU,IAAKR,mBAAmB,IAAIA,mBAAmB,CAACQ,KAAK,CAACC,WAAW,CAAE;IACnGR,eAAe,EAAGO,KAAU,IAAKP,eAAe,IAAIA,eAAe,CAACO,KAAK,CAACC,WAAW,CAAE;IACvFP,mBAAmB,EAAEA,CAAA,KAAMA,mBAAmB,IAAIA,mBAAmB,CAAC,CAAE;IACxEC,gBAAgB,EAAEA,CAAA,KAAMA,gBAAgB,IAAIA,gBAAgB,CAAC,CAAE;IAC/DC,kBAAkB,EAAGI,KAAU,IAAKJ,kBAAkB,IAAIA,kBAAkB,CAACI,KAAK,CAACC,WAAW,CAAE;IAChGJ,cAAc,EAAGG,KAAU,IAAKH,cAAc,IAAIA,cAAc,CAACG,KAAK,CAACC,WAAW,CAAE;IACpFH,SAAS,EAAEA,CAAA,KAAMA,SAAS,IAAIA,SAAS,CAAC,CAAE;IAC1CV,KAAK,EAAE,CAAC;MAACc,IAAI,EAAE;IAAC,CAAC,EAAEd,KAAK;EAAE,CAAC,CAC7C;EAED,OAAce,0BAA0B,GAAqCA,CAAC;IACEf,KAAK;IACLC,QAAQ;IACRC,OAAO;IACPC,iBAAiB;IACjBC,mBAAmB;IACnBC,eAAe;IACfC,mBAAmB;IACnBC,gBAAgB;IAChBC,kBAAkB;IAClBC,cAAc;IACdC;EACF,CAAC,KAAK;IAClF;IACA;IACA;IACA;IACA,MAAM,CAACM,aAAa,EAAEC,gBAAgB,CAAC,GAAGvC,QAAQ,CAAC,EAAE,CAAC;IACtD,MAAM,CAACwC,MAAM,EAAEC,SAAS,CAAC,GAAGzC,QAAQ,CAAC,CAAC,CAAC;IAEvCD,SAAS,CAAC,MAAM;MAKd,MAAM2C,0BAA0B,GAAGA,CAAC;QAACC;MAAwC,CAAC,KAAK;QACjFJ,gBAAgB,CAAC,EAAE,GAAGI,MAAM,CAAC;MAC/B,CAAC;MAED,MAAMC,YAAY,GAAGrC,YAAY,CAACsC,WAAW,CAC3C,yBAAyB,EACzBH,0BACF,CAAC;MAED,OAAO,MAAM;QACXE,YAAY,CAACE,MAAM,CAAC,CAAC;MACvB,CAAC;IACH,CAAC,EAAE,EAAE,CAAC;IAEN,oBACEhD,KAAA,CAAAmC,aAAA,CAACrC,IAAI;MAAC0B,KAAK,EAAE,CAAC;QAACc,IAAI,EAAE;MAAC,CAAC,EAAEd,KAAK;IAAE,gBAC9BxB,KAAA,CAAAmC,aAAA,CAACvC,UAAU;MAACqD,qBAAqB,EAAE;QAACC,QAAQ,EAAE,CAAC;QAAEV;MAAa;IAAE,GAC7Df,QACS,CAAC,eAEbzB,KAAA,CAAAmC,aAAA,CAACvB,yBAAyB;MACxBY,KAAK,EAAE9B,QAAQ,CAACU,MAAM,CAAC;QACrBC,GAAG,EAAE;UAAC8C,SAAS,EAAE,CAAC;QAAE,CAAC;QACrBC,OAAO,EAAE;UAACD,SAAS,EAAE,CAAC,EAAE;UAAET;QAAM;MAClC,CAAC,CAAE;MACHhB,OAAO,EAAEA,OAAQ;MACjBC,iBAAiB,EAAGS,KAAU,IAAKT,iBAAiB,IAAIA,iBAAiB,CAACS,KAAK,CAACC,WAAW,CAAE;MAC7FT,mBAAmB,EAAGQ,KAAU,IAAKR,mBAAmB,IAAIA,mBAAmB,CAACQ,KAAK,CAACC,WAAW,CAAE;MACnGR,eAAe,EAAGO,KAAU,IAAKP,eAAe,IAAIA,eAAe,CAACO,KAAK,CAACC,WAAW,CAAE;MACvFP,mBAAmB,EAAEA,CAAA,KAAMA,mBAAmB,IAAIA,mBAAmB,CAAC,CAAE;MACxEC,gBAAgB,EAAEA,CAAA,KAAMA,gBAAgB,IAAIA,gBAAgB,CAAC,CAAE;MAC/DC,kBAAkB,EAAGI,KAAU,IAAKJ,kBAAkB,IAAIA,kBAAkB,CAACI,KAAK,CAACC,WAAW,CAAE;MAChGJ,cAAc,EAAGG,KAAU,IAAKH,cAAc,IAAIA,cAAc,CAACG,KAAK,CAACC,WAAW,CAAE;MACpFH,SAAS,EAAEA,CAAA,KAAMA,SAAS,IAAIA,SAAS,CAAC,CAAE;MAC1CmB,SAAS,EAAGjB,KAAU,IAAKO,SAAS,CAACP,KAAK,CAACC,WAAW,CAACiB,YAAY,CAACZ,MAAM;IAAE,CAC7E,CACG,CAAC;EAEX,CAAC;AACH","ignoreList":[]}
|
@@ -11,6 +11,17 @@ export interface PresentPaywallParams {
|
|
11
11
|
* The offering to load the paywall with. This will be the "current" offering by default.
|
12
12
|
*/
|
13
13
|
offering?: PurchasesOffering;
|
14
|
+
/**
|
15
|
+
* The fontFamily name to use in the Paywall. In order to add a font family, add it in the react native app and make
|
16
|
+
* sure to run `npx react-native-asset` so it's added to the native components.
|
17
|
+
* Supported font types are `.ttf` and `.otf`.
|
18
|
+
* Make sure the file names follow the convention:
|
19
|
+
* - Regular: MyFont.ttf/MyFont.otf
|
20
|
+
* - Bold: MyFont_bold.ttf/MyFont_bold.otf
|
21
|
+
* - Italic: MyFont_italic.ttf/MyFont_italic.otf
|
22
|
+
* - Bold and Italic: MyFont_bold_italic.ttf/MyFont_bold_italic.otf
|
23
|
+
*/
|
24
|
+
fontFamily?: string | null;
|
14
25
|
}
|
15
26
|
export type PresentPaywallIfNeededParams = PresentPaywallParams & {
|
16
27
|
/**
|
@@ -36,6 +47,7 @@ export interface PaywallViewOptions {
|
|
36
47
|
fontFamily?: string | null;
|
37
48
|
}
|
38
49
|
export interface FullScreenPaywallViewOptions extends PaywallViewOptions {
|
50
|
+
displayCloseButton?: boolean | false;
|
39
51
|
}
|
40
52
|
export interface FooterPaywallViewOptions extends PaywallViewOptions {
|
41
53
|
}
|
@@ -105,7 +117,7 @@ export default class RevenueCatUI {
|
|
105
117
|
* @param {PresentPaywallParams} params - The options for presenting the paywall.
|
106
118
|
* @returns {Promise<PAYWALL_RESULT>} A promise that resolves with the result of the paywall presentation.
|
107
119
|
*/
|
108
|
-
static presentPaywall({ offering, displayCloseButton }?: PresentPaywallParams): Promise<PAYWALL_RESULT>;
|
120
|
+
static presentPaywall({ offering, displayCloseButton, fontFamily, }?: PresentPaywallParams): Promise<PAYWALL_RESULT>;
|
109
121
|
/**
|
110
122
|
* Presents a paywall to the user if a specific entitlement is not already owned.
|
111
123
|
*
|
@@ -119,7 +131,7 @@ export default class RevenueCatUI {
|
|
119
131
|
* @param {PresentPaywallIfNeededParams} params - The parameters for presenting the paywall.
|
120
132
|
* @returns {Promise<PAYWALL_RESULT>} A promise that resolves with the result of the paywall presentation.
|
121
133
|
*/
|
122
|
-
static presentPaywallIfNeeded({ requiredEntitlementIdentifier, offering, displayCloseButton }: PresentPaywallIfNeededParams): Promise<PAYWALL_RESULT>;
|
134
|
+
static presentPaywallIfNeeded({ requiredEntitlementIdentifier, offering, displayCloseButton, fontFamily, }: PresentPaywallIfNeededParams): Promise<PAYWALL_RESULT>;
|
123
135
|
static Paywall: React.FC<FullScreenPaywallViewProps>;
|
124
136
|
static PaywallFooterContainerView: React.FC<FooterPaywallViewProps>;
|
125
137
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,SAAS,EAGd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,YAAY,EACjB,cAAc,EAAE,KAAK,cAAc,EACnC,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAC7C,KAAK,yBAAyB,EAC/B,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAAE,EAAE,KAAK,SAAS,EAAuB,MAAM,OAAO,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AA6B3E,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAC;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "react-native-purchases-ui",
|
3
3
|
"title": "React Native Purchases UI",
|
4
|
-
"version": "8.0.
|
4
|
+
"version": "8.0.1",
|
5
5
|
"description": "React Native in-app purchases and subscriptions made easy. Supports iOS and Android.",
|
6
6
|
"main": "lib/commonjs/index",
|
7
7
|
"module": "lib/module/index",
|
@@ -52,31 +52,32 @@
|
|
52
52
|
"license": "MIT",
|
53
53
|
"readmeFilename": "README.md",
|
54
54
|
"devDependencies": {
|
55
|
-
"@types/jest": "^
|
56
|
-
"@types/react": "
|
55
|
+
"@types/jest": "^29.5.12",
|
56
|
+
"@types/react": "^18.2.44",
|
57
57
|
"@types/react-dom": "~18.2.0",
|
58
|
-
"jest": "^
|
58
|
+
"jest": "^29.7.0",
|
59
59
|
"jest-react-native": "^18.0.0",
|
60
60
|
"pod-install": "^0.1.0",
|
61
61
|
"prettier": "^2.0.5",
|
62
62
|
"react": "18.2.0",
|
63
|
-
"react-native": "0.73.
|
63
|
+
"react-native": "0.73.5",
|
64
64
|
"react-native-builder-bob": "^0.20.0",
|
65
|
-
"ts-jest": "^
|
65
|
+
"ts-jest": "^29.1.2",
|
66
66
|
"tslint": "^5.20.0",
|
67
67
|
"tslint-config-prettier": "^1.18.0",
|
68
|
-
"typedoc": "^0.
|
69
|
-
"typescript": "^5.
|
68
|
+
"typedoc": "^0.25.11",
|
69
|
+
"typescript": "^5.2.2"
|
70
70
|
},
|
71
71
|
"resolutions": {
|
72
|
-
"@types/react": "18.2.
|
73
|
-
"@types/react-native": "0.73.
|
72
|
+
"@types/react": "^18.2.44",
|
73
|
+
"@types/react-native": "0.73.5",
|
74
74
|
"@types/react-dom": "18.2.0"
|
75
75
|
},
|
76
76
|
"peerDependencies": {
|
77
77
|
"react": "*",
|
78
78
|
"react-native": "*"
|
79
79
|
},
|
80
|
+
"packageManager": "yarn@3.6.1",
|
80
81
|
"jest": {
|
81
82
|
"preset": "react-native",
|
82
83
|
"modulePathIgnorePatterns": [
|
@@ -113,7 +114,7 @@
|
|
113
114
|
]
|
114
115
|
},
|
115
116
|
"dependencies": {
|
116
|
-
"@revenuecat/purchases-typescript-internal": "
|
117
|
-
"react-native-purchases": "8.0.
|
117
|
+
"@revenuecat/purchases-typescript-internal": "13.0.1",
|
118
|
+
"react-native-purchases": "8.0.1"
|
118
119
|
}
|
119
120
|
}
|
package/src/index.tsx
CHANGED
@@ -41,7 +41,7 @@ const InternalPaywall =
|
|
41
41
|
};
|
42
42
|
|
43
43
|
const InternalPaywallFooterView = UIManager.getViewManagerConfig('Paywall') != null
|
44
|
-
? requireNativeComponent<
|
44
|
+
? requireNativeComponent<InternalFooterPaywallViewProps>('RCPaywallFooterView')
|
45
45
|
: () => {
|
46
46
|
throw new Error(LINKING_ERROR);
|
47
47
|
};
|
@@ -56,6 +56,18 @@ export interface PresentPaywallParams {
|
|
56
56
|
* The offering to load the paywall with. This will be the "current" offering by default.
|
57
57
|
*/
|
58
58
|
offering?: PurchasesOffering;
|
59
|
+
|
60
|
+
/**
|
61
|
+
* The fontFamily name to use in the Paywall. In order to add a font family, add it in the react native app and make
|
62
|
+
* sure to run `npx react-native-asset` so it's added to the native components.
|
63
|
+
* Supported font types are `.ttf` and `.otf`.
|
64
|
+
* Make sure the file names follow the convention:
|
65
|
+
* - Regular: MyFont.ttf/MyFont.otf
|
66
|
+
* - Bold: MyFont_bold.ttf/MyFont_bold.otf
|
67
|
+
* - Italic: MyFont_italic.ttf/MyFont_italic.otf
|
68
|
+
* - Bold and Italic: MyFont_bold_italic.ttf/MyFont_bold_italic.otf
|
69
|
+
*/
|
70
|
+
fontFamily?: string | null;
|
59
71
|
}
|
60
72
|
|
61
73
|
export type PresentPaywallIfNeededParams = PresentPaywallParams & {
|
@@ -85,7 +97,7 @@ export interface PaywallViewOptions {
|
|
85
97
|
}
|
86
98
|
|
87
99
|
export interface FullScreenPaywallViewOptions extends PaywallViewOptions {
|
88
|
-
|
100
|
+
displayCloseButton?: boolean | false;
|
89
101
|
}
|
90
102
|
|
91
103
|
// Currently the same as the base type, but can be extended later if needed
|
@@ -127,6 +139,10 @@ type FooterPaywallViewProps = {
|
|
127
139
|
onDismiss?: () => void;
|
128
140
|
};
|
129
141
|
|
142
|
+
type InternalFooterPaywallViewProps = FooterPaywallViewProps & {
|
143
|
+
onMeasure?: ({height}: { height: number }) => void;
|
144
|
+
};
|
145
|
+
|
130
146
|
export default class RevenueCatUI {
|
131
147
|
|
132
148
|
private static Defaults = {
|
@@ -152,9 +168,14 @@ export default class RevenueCatUI {
|
|
152
168
|
*/
|
153
169
|
public static presentPaywall({
|
154
170
|
offering,
|
155
|
-
displayCloseButton = RevenueCatUI.Defaults.PRESENT_PAYWALL_DISPLAY_CLOSE_BUTTON
|
171
|
+
displayCloseButton = RevenueCatUI.Defaults.PRESENT_PAYWALL_DISPLAY_CLOSE_BUTTON,
|
172
|
+
fontFamily,
|
156
173
|
}: PresentPaywallParams = {}): Promise<PAYWALL_RESULT> {
|
157
|
-
return RNPaywalls.presentPaywall(
|
174
|
+
return RNPaywalls.presentPaywall(
|
175
|
+
offering?.identifier ?? null,
|
176
|
+
displayCloseButton,
|
177
|
+
fontFamily,
|
178
|
+
)
|
158
179
|
}
|
159
180
|
|
160
181
|
/**
|
@@ -173,9 +194,15 @@ export default class RevenueCatUI {
|
|
173
194
|
public static presentPaywallIfNeeded({
|
174
195
|
requiredEntitlementIdentifier,
|
175
196
|
offering,
|
176
|
-
displayCloseButton = RevenueCatUI.Defaults.PRESENT_PAYWALL_DISPLAY_CLOSE_BUTTON
|
197
|
+
displayCloseButton = RevenueCatUI.Defaults.PRESENT_PAYWALL_DISPLAY_CLOSE_BUTTON,
|
198
|
+
fontFamily,
|
177
199
|
}: PresentPaywallIfNeededParams): Promise<PAYWALL_RESULT> {
|
178
|
-
return RNPaywalls.presentPaywallIfNeeded(
|
200
|
+
return RNPaywalls.presentPaywallIfNeeded(
|
201
|
+
requiredEntitlementIdentifier,
|
202
|
+
offering?.identifier ?? null,
|
203
|
+
displayCloseButton,
|
204
|
+
fontFamily,
|
205
|
+
)
|
179
206
|
}
|
180
207
|
|
181
208
|
public static Paywall: React.FC<FullScreenPaywallViewProps> = ({
|
@@ -222,6 +249,7 @@ export default class RevenueCatUI {
|
|
222
249
|
// safe area insets change. Not adding this extra padding on iOS will cause the content of the scrollview
|
223
250
|
// to be hidden behind the rounded corners of the paywall.
|
224
251
|
const [paddingBottom, setPaddingBottom] = useState(20);
|
252
|
+
const [height, setHeight] = useState(0);
|
225
253
|
|
226
254
|
useEffect(() => {
|
227
255
|
interface HandleSafeAreaInsetsChangeParams {
|
@@ -249,7 +277,10 @@ export default class RevenueCatUI {
|
|
249
277
|
</ScrollView>
|
250
278
|
{/*Adding negative margin to the footer view to make it overlap with the extra padding of the scroll*/}
|
251
279
|
<InternalPaywallFooterView
|
252
|
-
style={{
|
280
|
+
style={Platform.select({
|
281
|
+
ios: {marginTop: -20},
|
282
|
+
android: {marginTop: -20, height}
|
283
|
+
})}
|
253
284
|
options={options}
|
254
285
|
onPurchaseStarted={(event: any) => onPurchaseStarted && onPurchaseStarted(event.nativeEvent)}
|
255
286
|
onPurchaseCompleted={(event: any) => onPurchaseCompleted && onPurchaseCompleted(event.nativeEvent)}
|
@@ -259,6 +290,7 @@ export default class RevenueCatUI {
|
|
259
290
|
onRestoreCompleted={(event: any) => onRestoreCompleted && onRestoreCompleted(event.nativeEvent)}
|
260
291
|
onRestoreError={(event: any) => onRestoreError && onRestoreError(event.nativeEvent)}
|
261
292
|
onDismiss={() => onDismiss && onDismiss()}
|
293
|
+
onMeasure={(event: any) => setHeight(event.nativeEvent.measurements.height)}
|
262
294
|
/>
|
263
295
|
</View>
|
264
296
|
);
|