import type { AxiosError } from "axios"; export type ServerError = { statusCode: number; error: string; message: string; }; const translateMessage: Record = { "user not found": "Пользователь не найден", "invalid password": "Неправильный пароль", "field is empty": 'Поле "Пароль" не заполнено', "field is empty": 'Поле "Логин" не заполнено', "field is empty": 'Поле "E-mail" не заполнено', "field is empty": 'Поле "Номер телефона" не заполнено', "user with this email or login is exist": "Пользователь уже существует", "user with this login is exist": "Пользователь с таким логином уже существует", }; export const parseAxiosError = (nativeError: unknown): [string, number?] => { const error = nativeError as AxiosError; if (error.response?.data && "statusCode" in (error.response.data as ServerError)) { const serverError = error.response.data as ServerError; const translatedMessage = translateMessage[serverError.message]; if (translatedMessage !== undefined) serverError.message = translatedMessage; return [serverError.message, serverError.statusCode]; } switch (error.status) { case 404: return ["Не найдено.", error.status]; case 403: return ["Доступ ограничен.", error.status]; case 401: return ["Ошибка авторизации.", error.status]; case 500: return ["Внутренняя ошибка сервера.", error.status]; case 503: return ["Сервис недоступен.", error.status]; default: return ["Неизвестная ошибка сервера."]; } };