From bade6b620ea140e47c8725302061f50e7c6d3485 Mon Sep 17 00:00:00 2001 From: javayhu Date: Sat, 16 Aug 2025 23:08:16 +0800 Subject: [PATCH] refactor: enhance error handling in credit balance retrieval --- src/actions/get-credit-balance.ts | 4 ++-- src/lib/safe-action.ts | 2 +- src/stores/credits-store.ts | 5 +++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/actions/get-credit-balance.ts b/src/actions/get-credit-balance.ts index da097b8..c2137bd 100644 --- a/src/actions/get-credit-balance.ts +++ b/src/actions/get-credit-balance.ts @@ -9,8 +9,8 @@ import { userActionClient } from '@/lib/safe-action'; */ export const getCreditBalanceAction = userActionClient.action( async ({ ctx }) => { - const user = (ctx as { user: User }).user; - const credits = await getUserCredits(user.id); + const currentUser = (ctx as { user: User }).user; + const credits = await getUserCredits(currentUser.id); return { success: true, credits }; } ); diff --git a/src/lib/safe-action.ts b/src/lib/safe-action.ts index 12f37d1..84b1c43 100644 --- a/src/lib/safe-action.ts +++ b/src/lib/safe-action.ts @@ -27,7 +27,6 @@ export const actionClient = createSafeActionClient({ // ----------------------------------------------------------------------------- export const userActionClient = actionClient.use(async ({ next }) => { const session = await getSession(); - if (!session?.user) { return { success: false, @@ -45,6 +44,7 @@ export const adminActionClient = userActionClient.use(async ({ next, ctx }) => { const user = (ctx as { user: User }).user; const isDemo = isDemoWebsite(); const isAdmin = user.role === 'admin'; + // If this is a demo website and user is not an admin, allow the request if (!isAdmin && !isDemo) { return { diff --git a/src/stores/credits-store.ts b/src/stores/credits-store.ts index 038482d..0f7325e 100644 --- a/src/stores/credits-store.ts +++ b/src/stores/credits-store.ts @@ -76,7 +76,7 @@ export const useCreditsStore = create((set, get) => ({ try { const result = await getCreditBalanceAction(); - if (result?.data?.success) { + if (result?.data?.success && result.data.credits !== undefined) { const newBalance = result.data.credits || 0; console.log('fetchCredits, set new balance', newBalance); set({ @@ -88,7 +88,8 @@ export const useCreditsStore = create((set, get) => ({ } else { console.warn('fetchCredits, failed to fetch credit balance', result); set({ - error: result?.data?.error || 'Failed to fetch credit balance', + error: + (result?.data as any)?.error || 'Failed to fetch credit balance', isLoading: false, }); }