@umituz/react-native-subscription 3.1.33 → 3.1.34
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": "3.1.
|
|
3
|
+
"version": "3.1.34",
|
|
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",
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { useCallback, useState } from "react";
|
|
2
2
|
import { getCreditsRepository } from "../../infrastructure/CreditsRepositoryManager";
|
|
3
|
+
import { createLogger } from "../../../../shared/utils/logger";
|
|
3
4
|
import type { UseDeductCreditParams, UseDeductCreditResult } from "./types";
|
|
4
5
|
|
|
6
|
+
const logger = createLogger("useDeductCredit");
|
|
7
|
+
|
|
5
8
|
export const useDeductCredit = ({
|
|
6
9
|
userId,
|
|
7
10
|
onCreditsExhausted,
|
|
@@ -15,26 +18,22 @@ export const useDeductCredit = ({
|
|
|
15
18
|
setIsDeducting(true);
|
|
16
19
|
try {
|
|
17
20
|
const res = await repository.deductCredit(userId, cost);
|
|
18
|
-
|
|
21
|
+
logger.debug("Deduction result", { result: res });
|
|
19
22
|
|
|
20
23
|
if (!res.success) {
|
|
21
|
-
|
|
24
|
+
logger.warn("Deduction failed", { code: res.error?.code, message: res.error?.message });
|
|
22
25
|
|
|
23
26
|
if (res.error?.code === "CREDITS_EXHAUSTED" || res.error?.code === "DEDUCT_ERR" || res.error?.code === "NO_CREDITS") {
|
|
24
|
-
|
|
27
|
+
logger.info("Credits exhausted, calling onCreditsExhausted callback");
|
|
25
28
|
onCreditsExhausted?.();
|
|
26
29
|
}
|
|
27
30
|
return false;
|
|
28
31
|
}
|
|
29
32
|
|
|
30
|
-
|
|
33
|
+
logger.debug("Deduction success", { remainingCredits: res.remainingCredits });
|
|
31
34
|
return true;
|
|
32
35
|
} catch (error) {
|
|
33
|
-
|
|
34
|
-
cost,
|
|
35
|
-
userId,
|
|
36
|
-
error: error instanceof Error ? error.message : String(error)
|
|
37
|
-
});
|
|
36
|
+
logger.error("Unexpected error during credit deduction", error, { cost, userId });
|
|
38
37
|
return false;
|
|
39
38
|
} finally {
|
|
40
39
|
setIsDeducting(false);
|
|
@@ -52,13 +51,7 @@ export const useDeductCredit = ({
|
|
|
52
51
|
const result = await repository.refundCredit(userId, amount);
|
|
53
52
|
return result.success;
|
|
54
53
|
} catch (error) {
|
|
55
|
-
|
|
56
|
-
console.error('[useDeductCredit] Unexpected error during credit refund', {
|
|
57
|
-
amount,
|
|
58
|
-
userId,
|
|
59
|
-
error: error instanceof Error ? error.message : String(error),
|
|
60
|
-
});
|
|
61
|
-
}
|
|
54
|
+
logger.error("Unexpected error during credit refund", error, { amount, userId });
|
|
62
55
|
return false;
|
|
63
56
|
}
|
|
64
57
|
}, [userId, repository]);
|
|
@@ -28,7 +28,7 @@ export const useCredits = (): UseCreditsResult => {
|
|
|
28
28
|
const hasUser = isAuthenticated(userId);
|
|
29
29
|
const queryEnabled = hasUser && isConfigured;
|
|
30
30
|
|
|
31
|
-
const { credits, isLoading, error } = useCreditsRealTime(userId);
|
|
31
|
+
const { credits, isLoading, error, refetch } = useCreditsRealTime(userId);
|
|
32
32
|
|
|
33
33
|
const derivedValues = useMemo(() => {
|
|
34
34
|
const has = (credits?.credits ?? 0) > 0;
|
|
@@ -53,7 +53,7 @@ export const useCredits = (): UseCreditsResult => {
|
|
|
53
53
|
error,
|
|
54
54
|
hasCredits: derivedValues.hasCredits,
|
|
55
55
|
creditsPercent: derivedValues.creditsPercent,
|
|
56
|
-
refetch
|
|
56
|
+
refetch,
|
|
57
57
|
canAfford,
|
|
58
58
|
};
|
|
59
59
|
};
|