refactor: enhance fetch logic in useCredits and usePayment hooks for improved clarity and consistency
This commit is contained in:
parent
c960738133
commit
2d2a85cd26
@ -13,39 +13,33 @@ export function useCredits() {
|
||||
balance,
|
||||
isLoading,
|
||||
error,
|
||||
fetchCredits,
|
||||
fetchCredits: fetchCreditsFromStore,
|
||||
consumeCredits,
|
||||
refreshCredits,
|
||||
} = useCreditsStore();
|
||||
|
||||
const { data: session } = authClient.useSession();
|
||||
|
||||
// Stable refetch function using useCallback
|
||||
const refetch = useCallback(() => {
|
||||
const currentUser = session?.user;
|
||||
if (currentUser) {
|
||||
console.log('refetching credits info for user', currentUser.id);
|
||||
fetchCredits(currentUser);
|
||||
}
|
||||
}, [session?.user, fetchCredits]);
|
||||
|
||||
// Stable refresh function using useCallback
|
||||
const refresh = useCallback(() => {
|
||||
const currentUser = session?.user;
|
||||
if (currentUser) {
|
||||
console.log('refreshing credits info for user', currentUser.id);
|
||||
refreshCredits(currentUser);
|
||||
}
|
||||
}, [session?.user, refreshCredits]);
|
||||
const fetchCredits = useCallback(
|
||||
(force = false) => {
|
||||
const currentUser = session?.user;
|
||||
if (currentUser) {
|
||||
console.log(
|
||||
`${force ? 'force fetch' : 'fetch'} credits for user`,
|
||||
currentUser.id
|
||||
);
|
||||
fetchCreditsFromStore(currentUser, force);
|
||||
}
|
||||
},
|
||||
[session?.user, fetchCreditsFromStore]
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
const currentUser = session?.user;
|
||||
// Fetch credits data whenever the user session changes
|
||||
if (currentUser) {
|
||||
console.log('fetching credits info for user', currentUser.id);
|
||||
fetchCredits(currentUser);
|
||||
console.log('fetch credits info for user', currentUser.id);
|
||||
fetchCreditsFromStore(currentUser);
|
||||
}
|
||||
}, [session?.user, fetchCredits]);
|
||||
}, [session?.user, fetchCreditsFromStore]);
|
||||
|
||||
return {
|
||||
// State
|
||||
@ -54,12 +48,9 @@ export function useCredits() {
|
||||
error,
|
||||
|
||||
// Methods
|
||||
fetchCredits,
|
||||
consumeCredits,
|
||||
|
||||
// Utility methods
|
||||
refetch,
|
||||
refresh,
|
||||
|
||||
// Helper methods
|
||||
hasEnoughCredits: (amount: number) => balance >= amount,
|
||||
};
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { authClient } from '@/lib/auth-client';
|
||||
import { usePaymentStore } from '@/stores/payment-store';
|
||||
import { useEffect } from 'react';
|
||||
import { useCallback, useEffect } from 'react';
|
||||
|
||||
/**
|
||||
* Hook for accessing and managing payment state
|
||||
@ -9,31 +9,43 @@ import { useEffect } from 'react';
|
||||
* It also automatically fetches payment information when the user changes.
|
||||
*/
|
||||
export function usePayment() {
|
||||
const { currentPlan, subscription, isLoading, error, fetchPayment } =
|
||||
usePaymentStore();
|
||||
|
||||
const { data: session } = authClient.useSession();
|
||||
|
||||
useEffect(() => {
|
||||
const currentUser = session?.user;
|
||||
// Fetch payment data whenever the user session changes
|
||||
if (currentUser) {
|
||||
console.log('fetching payment info for user', currentUser.id);
|
||||
fetchPayment(currentUser);
|
||||
}
|
||||
}, [session, fetchPayment]);
|
||||
|
||||
return {
|
||||
const {
|
||||
currentPlan,
|
||||
subscription,
|
||||
isLoading,
|
||||
error,
|
||||
refetch: () => {
|
||||
fetchPayment: fetchPaymentFromStore,
|
||||
} = usePaymentStore();
|
||||
|
||||
const { data: session } = authClient.useSession();
|
||||
|
||||
const fetchPayment = useCallback(
|
||||
(force = false) => {
|
||||
const currentUser = session?.user;
|
||||
if (currentUser) {
|
||||
console.log('refetching payment info for user', currentUser.id);
|
||||
fetchPayment(currentUser);
|
||||
console.log('fetch payment info for user', currentUser.id);
|
||||
fetchPaymentFromStore(currentUser);
|
||||
}
|
||||
},
|
||||
[session?.user, fetchPaymentFromStore]
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
const currentUser = session?.user;
|
||||
if (currentUser) {
|
||||
console.log('fetch payment info for user', currentUser.id);
|
||||
fetchPaymentFromStore(currentUser);
|
||||
}
|
||||
}, [session?.user, fetchPaymentFromStore]);
|
||||
|
||||
return {
|
||||
// State
|
||||
currentPlan,
|
||||
subscription,
|
||||
isLoading,
|
||||
error,
|
||||
|
||||
// Methods
|
||||
fetchPayment,
|
||||
};
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user