refactor: enhance error handling in credit balance retrieval
This commit is contained in:
parent
d1928575b3
commit
bade6b620e
@ -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 };
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -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 {
|
||||||
|
@ -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,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user