improvement: error handeling structure changed and unified all across the app. user no longer sees inappropriate messages.
This commit is contained in:
@@ -88,13 +88,34 @@ apiClient.interceptors.response.use(
|
||||
}
|
||||
}
|
||||
|
||||
const responseData = error.response?.data as
|
||||
| { success?: false; error?: { code?: string; statusCode?: number; details?: ApiError['details'] } }
|
||||
| { message?: string | string[] }
|
||||
| undefined;
|
||||
|
||||
if (responseData && 'error' in responseData && responseData.error?.code) {
|
||||
const apiError: ApiError = {
|
||||
statusCode: responseData.error.statusCode ?? error.response?.status ?? 500,
|
||||
code: responseData.error.code,
|
||||
details: responseData.error.details,
|
||||
};
|
||||
return Promise.reject(apiError);
|
||||
}
|
||||
|
||||
const apiError: ApiError = {
|
||||
statusCode: error.response?.status || 500,
|
||||
message:
|
||||
(error.response?.data as any)?.message ||
|
||||
error.message ||
|
||||
'An unexpected error occurred',
|
||||
error: (error.response?.data as any)?.error,
|
||||
code:
|
||||
error.response?.status === 401
|
||||
? 'AUTH_UNAUTHORIZED'
|
||||
: error.response?.status === 403
|
||||
? 'PERMISSION_DENIED'
|
||||
: error.response?.status === 404
|
||||
? 'NOT_FOUND'
|
||||
: error.response?.status === 409
|
||||
? 'CONFLICT'
|
||||
: (error.response?.status ?? 500) >= 500
|
||||
? 'INTERNAL_ERROR'
|
||||
: 'BAD_REQUEST',
|
||||
};
|
||||
|
||||
return Promise.reject(apiError);
|
||||
|
||||
Reference in New Issue
Block a user