improvement: error handeling structure changed and unified all across the app. user no longer sees inappropriate messages.

This commit is contained in:
2026-07-12 18:27:38 +03:30
parent 901d838a2c
commit fab5111aa8
45 changed files with 977 additions and 241 deletions

View File

@@ -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);