2024-02-16 14:59:22 +03:00

27 lines
704 B
TypeScript

import { HttpError } from './error';
import type { AxiosError } from 'axios';
import { isAxiosError } from 'axios';
function getErrorMessage<T extends { error?: string; errors?: string[]; message?: string }>(
error: AxiosError<T>
) {
return (
error.response?.data?.error ||
error.response?.data?.errors?.[0] ||
error.response?.data?.message ||
error.message
);
}
export async function withHandleError<T>(fn: Promise<T>) {
return fn.catch((error_: AxiosError | Error) => {
if (isAxiosError(error_)) {
const message = getErrorMessage(error_);
throw new HttpError(message, error_.status || error_.response?.status);
}
return null as unknown as T;
});
}