@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.14.102",
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 = (existing.credits || 0) + config.creditLimit;
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
- // Credits array
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(