@umituz/react-native-subscription 2.2.3 → 2.2.5
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@umituz/react-native-subscription",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.5",
|
|
4
4
|
"description": "Complete subscription management with RevenueCat, paywall UI, and credits system for React Native apps",
|
|
5
5
|
"main": "./src/index.ts",
|
|
6
6
|
"types": "./src/index.ts",
|
|
@@ -11,13 +11,23 @@ import { LegalLinks } from "@umituz/react-native-legal";
|
|
|
11
11
|
|
|
12
12
|
interface PaywallLegalFooterProps {
|
|
13
13
|
termsText?: string;
|
|
14
|
+
privacyUrl?: string;
|
|
15
|
+
termsUrl?: string;
|
|
16
|
+
privacyText?: string;
|
|
17
|
+
termsOfServiceText?: string;
|
|
14
18
|
}
|
|
15
19
|
|
|
16
20
|
const DEFAULT_TERMS =
|
|
17
21
|
"Payment will be charged to your account. Subscription automatically renews unless cancelled.";
|
|
18
22
|
|
|
19
23
|
export const PaywallLegalFooter: React.FC<PaywallLegalFooterProps> = React.memo(
|
|
20
|
-
({
|
|
24
|
+
({
|
|
25
|
+
termsText = DEFAULT_TERMS,
|
|
26
|
+
privacyUrl,
|
|
27
|
+
termsUrl,
|
|
28
|
+
privacyText,
|
|
29
|
+
termsOfServiceText
|
|
30
|
+
}) => {
|
|
21
31
|
const tokens = useAppDesignTokens();
|
|
22
32
|
|
|
23
33
|
return (
|
|
@@ -28,7 +38,13 @@ export const PaywallLegalFooter: React.FC<PaywallLegalFooterProps> = React.memo(
|
|
|
28
38
|
>
|
|
29
39
|
{termsText}
|
|
30
40
|
</AtomicText>
|
|
31
|
-
<LegalLinks
|
|
41
|
+
<LegalLinks
|
|
42
|
+
style={styles.legalLinks}
|
|
43
|
+
privacyPolicyUrl={privacyUrl}
|
|
44
|
+
termsOfServiceUrl={termsUrl}
|
|
45
|
+
privacyText={privacyText || "Privacy Policy"}
|
|
46
|
+
termsText={termsOfServiceText || "Terms of Service"}
|
|
47
|
+
/>
|
|
32
48
|
</View>
|
|
33
49
|
);
|
|
34
50
|
}
|
|
@@ -35,6 +35,10 @@ export interface SubscriptionModalProps {
|
|
|
35
35
|
loadingText?: string;
|
|
36
36
|
emptyText?: string;
|
|
37
37
|
processingText?: string;
|
|
38
|
+
privacyUrl?: string;
|
|
39
|
+
termsUrl?: string;
|
|
40
|
+
privacyText?: string;
|
|
41
|
+
termsOfServiceText?: string;
|
|
38
42
|
}
|
|
39
43
|
|
|
40
44
|
export const SubscriptionModal: React.FC<SubscriptionModalProps> = React.memo(
|
|
@@ -53,6 +57,10 @@ export const SubscriptionModal: React.FC<SubscriptionModalProps> = React.memo(
|
|
|
53
57
|
loadingText = "Loading packages...",
|
|
54
58
|
emptyText = "No packages available",
|
|
55
59
|
processingText = "Processing...",
|
|
60
|
+
privacyUrl,
|
|
61
|
+
termsUrl,
|
|
62
|
+
privacyText,
|
|
63
|
+
termsOfServiceText,
|
|
56
64
|
}) => {
|
|
57
65
|
const tokens = useAppDesignTokens();
|
|
58
66
|
const [selectedPkg, setSelectedPkg] = useState<PurchasesPackage | null>(null);
|
|
@@ -173,7 +181,12 @@ export const SubscriptionModal: React.FC<SubscriptionModalProps> = React.memo(
|
|
|
173
181
|
</TouchableOpacity>
|
|
174
182
|
</View>
|
|
175
183
|
|
|
176
|
-
<PaywallLegalFooter
|
|
184
|
+
<PaywallLegalFooter
|
|
185
|
+
privacyUrl={privacyUrl}
|
|
186
|
+
termsUrl={termsUrl}
|
|
187
|
+
privacyText={privacyText}
|
|
188
|
+
termsOfServiceText={termsOfServiceText}
|
|
189
|
+
/>
|
|
177
190
|
</SafeAreaView>
|
|
178
191
|
</View>
|
|
179
192
|
</View>
|
|
@@ -99,12 +99,14 @@ export function useFeatureGate(
|
|
|
99
99
|
onShowAuthModal(() => {
|
|
100
100
|
if (typeof __DEV__ !== "undefined" && __DEV__) {
|
|
101
101
|
// eslint-disable-next-line no-console
|
|
102
|
-
console.log(
|
|
102
|
+
console.log(
|
|
103
|
+
"[useFeatureGate] Auth successful. Component will re-render to check premium status."
|
|
104
|
+
);
|
|
103
105
|
}
|
|
104
|
-
//
|
|
105
|
-
// The component will re-render with new auth state
|
|
106
|
-
// and user
|
|
107
|
-
|
|
106
|
+
// We NO LONGER call action() blindly here.
|
|
107
|
+
// The component will re-render with the new auth state,
|
|
108
|
+
// and the user should be allowed to try the action again.
|
|
109
|
+
// This avoids executing actions before credits are loaded or verified.
|
|
108
110
|
});
|
|
109
111
|
return;
|
|
110
112
|
}
|