Files
family_budget/frontend/src/utils/errorHandler.ts
2026-01-29 15:32:22 +03:00

54 lines
1.3 KiB
TypeScript

import { AxiosError } from 'axios';
import { 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';
}