try to do better
This commit is contained in:
53
frontend/src/utils/errorHandler.ts
Normal file
53
frontend/src/utils/errorHandler.ts
Normal file
@@ -0,0 +1,53 @@
|
||||
import { AxiosError } from 'axios';
|
||||
import { ApiError, AppError } from '../types/errors';
|
||||
import { showToast } from './toast';
|
||||
|
||||
export function handleApiError(error: unknown): never {
|
||||
if (error instanceof AppError) {
|
||||
throw error;
|
||||
}
|
||||
|
||||
if (error instanceof AxiosError) {
|
||||
const status = error.response?.status;
|
||||
const message = error.response?.data?.message || error.message;
|
||||
const code = error.response?.data?.code;
|
||||
|
||||
throw new AppError(message, status, code);
|
||||
}
|
||||
|
||||
if (error instanceof Error) {
|
||||
throw new AppError(error.message);
|
||||
}
|
||||
|
||||
throw new AppError('Unknown error occurred');
|
||||
}
|
||||
|
||||
export function showErrorToast(error: unknown): void {
|
||||
let message = 'An unexpected error occurred';
|
||||
|
||||
if (error instanceof AppError) {
|
||||
message = error.message;
|
||||
} else if (error instanceof AxiosError) {
|
||||
message = error.response?.data?.message || error.message;
|
||||
} else if (error instanceof Error) {
|
||||
message = error.message;
|
||||
}
|
||||
|
||||
showToast.error(message);
|
||||
}
|
||||
|
||||
export function getErrorMessage(error: unknown): string {
|
||||
if (error instanceof AppError) {
|
||||
return error.message;
|
||||
}
|
||||
|
||||
if (error instanceof AxiosError) {
|
||||
return error.response?.data?.message || error.message;
|
||||
}
|
||||
|
||||
if (error instanceof Error) {
|
||||
return error.message;
|
||||
}
|
||||
|
||||
return 'An unexpected error occurred';
|
||||
}
|
||||
Reference in New Issue
Block a user