react-native-purchases-ui 8.0.0-beta.1 → 8.0.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/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":"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","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
|
);
|