refactor: enhance error handling in credit balance retrieval

This commit is contained in:
javayhu 2025-08-16 23:08:16 +08:00
parent d1928575b3
commit bade6b620e
3 changed files with 6 additions and 5 deletions

View File

@ -9,8 +9,8 @@ import { userActionClient } from '@/lib/safe-action';
*/ */
export const getCreditBalanceAction = userActionClient.action( export const getCreditBalanceAction = userActionClient.action(
async ({ ctx }) => { async ({ ctx }) => {
const user = (ctx as { user: User }).user; const currentUser = (ctx as { user: User }).user;
const credits = await getUserCredits(user.id); const credits = await getUserCredits(currentUser.id);
return { success: true, credits }; return { success: true, credits };
} }
); );

View File

@ -27,7 +27,6 @@ export const actionClient = createSafeActionClient({
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
export const userActionClient = actionClient.use(async ({ next }) => { export const userActionClient = actionClient.use(async ({ next }) => {
const session = await getSession(); const session = await getSession();
if (!session?.user) { if (!session?.user) {
return { return {
success: false, success: false,
@ -45,6 +44,7 @@ export const adminActionClient = userActionClient.use(async ({ next, ctx }) => {
const user = (ctx as { user: User }).user; const user = (ctx as { user: User }).user;
const isDemo = isDemoWebsite(); const isDemo = isDemoWebsite();
const isAdmin = user.role === 'admin'; const isAdmin = user.role === 'admin';
// If this is a demo website and user is not an admin, allow the request // If this is a demo website and user is not an admin, allow the request
if (!isAdmin && !isDemo) { if (!isAdmin && !isDemo) {
return { return {

View File

@ -76,7 +76,7 @@ export const useCreditsStore = create<CreditsState>((set, get) => ({
try { try {
const result = await getCreditBalanceAction(); const result = await getCreditBalanceAction();
if (result?.data?.success) { if (result?.data?.success && result.data.credits !== undefined) {
const newBalance = result.data.credits || 0; const newBalance = result.data.credits || 0;
console.log('fetchCredits, set new balance', newBalance); console.log('fetchCredits, set new balance', newBalance);
set({ set({
@ -88,7 +88,8 @@ export const useCreditsStore = create<CreditsState>((set, get) => ({
} else { } else {
console.warn('fetchCredits, failed to fetch credit balance', result); console.warn('fetchCredits, failed to fetch credit balance', result);
set({ set({
error: result?.data?.error || 'Failed to fetch credit balance', error:
(result?.data as any)?.error || 'Failed to fetch credit balance',
isLoading: false, isLoading: false,
}); });
} }