2023-11-08 12:51:40 +00:00
|
|
|
|
import type { AxiosError } from "axios";
|
|
|
|
|
|
|
|
|
|
export type ServerError = {
|
|
|
|
|
statusCode: number;
|
|
|
|
|
error: string;
|
|
|
|
|
message: string;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const translateMessage: Record<string, string> = {
|
|
|
|
|
"user not found": "Пользователь не найден",
|
|
|
|
|
"invalid password": "Неправильный пароль",
|
2023-12-31 02:53:25 +00:00
|
|
|
|
"field <password> is empty": 'Поле "Пароль" не заполнено',
|
|
|
|
|
"field <login> is empty": 'Поле "Логин" не заполнено',
|
|
|
|
|
"field <email> is empty": 'Поле "E-mail" не заполнено',
|
|
|
|
|
"field <phoneNumber> is empty": 'Поле "Номер телефона" не заполнено',
|
2023-11-08 12:51:40 +00:00
|
|
|
|
"user with this email or login is exist": "Пользователь уже существует",
|
2023-12-31 02:53:25 +00:00
|
|
|
|
"user with this login is exist":
|
|
|
|
|
"Пользователь с таким логином уже существует",
|
2024-04-09 10:41:32 +00:00
|
|
|
|
"promocode already activated": "Промокод уже активирован",
|
|
|
|
|
"promocode not found": "Промокод не найден",
|
|
|
|
|
"promo code is expired": "Промокод истек",
|
2023-11-08 12:51:40 +00:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const parseAxiosError = (nativeError: unknown): [string, number?] => {
|
|
|
|
|
const error = nativeError as AxiosError;
|
2024-01-21 01:13:11 +00:00
|
|
|
|
if (error.response?.data) {
|
2023-11-08 12:51:40 +00:00
|
|
|
|
const serverError = error.response.data as ServerError;
|
2024-01-21 01:13:11 +00:00
|
|
|
|
let SEMessage;
|
|
|
|
|
if ("statusCode" in (error.response?.data as ServerError)) {
|
|
|
|
|
SEMessage = serverError?.message.toLowerCase() || "";
|
|
|
|
|
}
|
2024-01-28 20:45:13 +00:00
|
|
|
|
if (
|
|
|
|
|
"error" in (error.response?.data as ServerError) &&
|
|
|
|
|
!("statusCode" in (error.response?.data as ServerError))
|
|
|
|
|
) {
|
2024-01-21 01:13:11 +00:00
|
|
|
|
SEMessage = serverError?.error.toLowerCase() || "";
|
|
|
|
|
}
|
|
|
|
|
console.log(serverError);
|
2024-04-09 10:41:32 +00:00
|
|
|
|
const translatedMessage = translateMessage[SEMessage || ""]?.toLowerCase();
|
2024-01-21 01:13:11 +00:00
|
|
|
|
if (translatedMessage !== undefined) SEMessage = translatedMessage;
|
|
|
|
|
return [SEMessage || "", serverError.statusCode];
|
2023-11-08 12:51:40 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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 ["Неизвестная ошибка сервера."];
|
|
|
|
|
}
|
|
|
|
|
};
|