@umituz/react-native-subscription 2.31.25 → 2.31.26
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.31.
|
|
3
|
+
"version": "2.31.26",
|
|
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",
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* Auth info automatically read from @umituz/react-native-auth
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import { useQuery } from "@umituz/react-native-design-system";
|
|
7
|
+
import { useQuery, useQueryClient } from "@umituz/react-native-design-system";
|
|
8
|
+
import { useEffect, useRef } from "react";
|
|
8
9
|
import {
|
|
9
10
|
useAuthStore,
|
|
10
11
|
selectUserId,
|
|
@@ -22,11 +23,12 @@ import {
|
|
|
22
23
|
export const useSubscriptionPackages = () => {
|
|
23
24
|
const userId = useAuthStore(selectUserId);
|
|
24
25
|
const isConfigured = SubscriptionManager.isConfigured();
|
|
26
|
+
const queryClient = useQueryClient();
|
|
27
|
+
const prevUserIdRef = useRef(userId);
|
|
25
28
|
|
|
26
|
-
|
|
29
|
+
const query = useQuery({
|
|
27
30
|
queryKey: [...SUBSCRIPTION_QUERY_KEYS.packages, userId ?? "anonymous"] as const,
|
|
28
31
|
queryFn: async () => {
|
|
29
|
-
// Initialize if needed (works for both authenticated and anonymous users)
|
|
30
32
|
if (userId) {
|
|
31
33
|
if (!SubscriptionManager.isInitializedForUser(userId)) {
|
|
32
34
|
await SubscriptionManager.initialize(userId);
|
|
@@ -46,4 +48,27 @@ export const useSubscriptionPackages = () => {
|
|
|
46
48
|
refetchOnWindowFocus: false,
|
|
47
49
|
refetchOnReconnect: true,
|
|
48
50
|
});
|
|
51
|
+
|
|
52
|
+
useEffect(() => {
|
|
53
|
+
const prevUserId = prevUserIdRef.current;
|
|
54
|
+
prevUserIdRef.current = userId;
|
|
55
|
+
|
|
56
|
+
if (prevUserId !== userId) {
|
|
57
|
+
if (prevUserId) {
|
|
58
|
+
queryClient.removeQueries({
|
|
59
|
+
queryKey: [...SUBSCRIPTION_QUERY_KEYS.packages, prevUserId],
|
|
60
|
+
});
|
|
61
|
+
} else {
|
|
62
|
+
queryClient.removeQueries({
|
|
63
|
+
queryKey: [...SUBSCRIPTION_QUERY_KEYS.packages, "anonymous"],
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
queryClient.invalidateQueries({
|
|
68
|
+
queryKey: [...SUBSCRIPTION_QUERY_KEYS.packages, userId ?? "anonymous"],
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}, [userId, queryClient]);
|
|
72
|
+
|
|
73
|
+
return query;
|
|
49
74
|
};
|
|
@@ -15,8 +15,9 @@ export const subscriptionStatusQueryKeys = {
|
|
|
15
15
|
export const useSubscriptionStatus = (): SubscriptionStatusResult => {
|
|
16
16
|
const userId = useAuthStore(selectUserId);
|
|
17
17
|
const queryClient = useQueryClient();
|
|
18
|
+
const isConfigured = SubscriptionManager.isConfigured();
|
|
18
19
|
|
|
19
|
-
const queryEnabled = isAuthenticated(userId) &&
|
|
20
|
+
const queryEnabled = isAuthenticated(userId) && isConfigured;
|
|
20
21
|
|
|
21
22
|
const { data, status, error, refetch } = useQuery({
|
|
22
23
|
queryKey: subscriptionStatusQueryKeys.user(userId),
|
|
@@ -25,6 +26,10 @@ export const useSubscriptionStatus = (): SubscriptionStatusResult => {
|
|
|
25
26
|
return null;
|
|
26
27
|
}
|
|
27
28
|
|
|
29
|
+
if (!SubscriptionManager.isInitializedForUser(userId)) {
|
|
30
|
+
await SubscriptionManager.initialize(userId);
|
|
31
|
+
}
|
|
32
|
+
|
|
28
33
|
try {
|
|
29
34
|
const result = await SubscriptionManager.checkPremiumStatus();
|
|
30
35
|
return result;
|