@umituz/react-native-subscription 2.14.102 → 2.15.0
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.
|
|
3
|
+
"version": "2.15.0",
|
|
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",
|
|
@@ -38,7 +38,7 @@ export async function initializeCreditsTransaction(
|
|
|
38
38
|
} as any;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
newCredits =
|
|
41
|
+
newCredits = config.creditLimit;
|
|
42
42
|
|
|
43
43
|
if (existing.purchasedAt) {
|
|
44
44
|
purchasedAt = existing.purchasedAt as unknown as FieldValue;
|
|
@@ -31,8 +31,6 @@ const waitForAuthState = async (getAuth: () => FirebaseAuthLike | null, timeoutM
|
|
|
31
31
|
});
|
|
32
32
|
};
|
|
33
33
|
|
|
34
|
-
const isCreditPkg = (id: string, pat?: string) => id.toLowerCase().includes((pat || "credit").toLowerCase());
|
|
35
|
-
|
|
36
34
|
export const initializeSubscription = async (config: SubscriptionInitConfig): Promise<void> => {
|
|
37
35
|
const { apiKey, apiKeyIos, apiKeyAndroid, testStoreKey, entitlementId, credits, getAnonymousUserId, getFirebaseAuth, showAuthModal, onCreditsUpdated, creditPackages, timeoutMs = 10000, authStateTimeoutMs = 2000 } = config;
|
|
38
36
|
|
|
@@ -42,7 +40,6 @@ export const initializeSubscription = async (config: SubscriptionInitConfig): Pr
|
|
|
42
40
|
configureCreditsRepository({ ...credits, creditPackageAmounts: creditPackages?.amounts });
|
|
43
41
|
|
|
44
42
|
const onPurchase = async (userId: string, productId: string) => {
|
|
45
|
-
if (!isCreditPkg(productId, creditPackages?.identifierPattern)) return;
|
|
46
43
|
try {
|
|
47
44
|
await getCreditsRepository().initializeCredits(userId, `purchase_${productId}_${Date.now()}`, productId);
|
|
48
45
|
onCreditsUpdated?.(userId);
|
|
@@ -13,6 +13,9 @@ import { calculateDaysRemaining } from "../../domain/entities/SubscriptionStatus
|
|
|
13
13
|
import { SubscriptionManager } from "../../revenuecat/infrastructure/managers/SubscriptionManager";
|
|
14
14
|
import { formatDate, convertPurchasedAt } from "../utils/subscriptionDateUtils";
|
|
15
15
|
import { useCreditsArray, getSubscriptionStatusType } from "./useSubscriptionSettingsConfig.utils";
|
|
16
|
+
import { getCreditsConfig } from "../../infrastructure/repositories/CreditsRepositoryProvider";
|
|
17
|
+
import { detectPackageType } from "../../utils/packageTypeDetector";
|
|
18
|
+
import { getCreditAllocation } from "../../utils/creditMapper";
|
|
16
19
|
import type {
|
|
17
20
|
SubscriptionSettingsConfig,
|
|
18
21
|
SubscriptionStatusType,
|
|
@@ -61,6 +64,16 @@ export const useSubscriptionSettingsConfig = (
|
|
|
61
64
|
// This is the source of truth, subscriptionActive is just a backup
|
|
62
65
|
const isPremium = !!premiumEntitlement || subscriptionActive;
|
|
63
66
|
|
|
67
|
+
const dynamicCreditLimit = useMemo(() => {
|
|
68
|
+
if (!premiumEntitlement?.productIdentifier) {
|
|
69
|
+
return creditLimit;
|
|
70
|
+
}
|
|
71
|
+
const config = getCreditsConfig();
|
|
72
|
+
const packageType = detectPackageType(premiumEntitlement.productIdentifier);
|
|
73
|
+
const allocation = getCreditAllocation(packageType, config.packageAllocations);
|
|
74
|
+
return allocation ?? creditLimit ?? config.creditLimit;
|
|
75
|
+
}, [premiumEntitlement?.productIdentifier, creditLimit]);
|
|
76
|
+
|
|
64
77
|
// Get expiration date from RevenueCat entitlement (source of truth)
|
|
65
78
|
// premiumEntitlement.expirationDate is an ISO string from RevenueCat
|
|
66
79
|
const entitlementExpirationDate = premiumEntitlement?.expirationDate || null;
|
|
@@ -95,8 +108,7 @@ export const useSubscriptionSettingsConfig = (
|
|
|
95
108
|
// Status type
|
|
96
109
|
const statusType: SubscriptionStatusType = getSubscriptionStatusType(isPremium);
|
|
97
110
|
|
|
98
|
-
|
|
99
|
-
const creditsArray = useCreditsArray(credits, creditLimit, translations);
|
|
111
|
+
const creditsArray = useCreditsArray(credits, dynamicCreditLimit, translations);
|
|
100
112
|
|
|
101
113
|
// Build config
|
|
102
114
|
const config = useMemo(
|