человекопонятный перевод ошибок

This commit is contained in:
Tamara 2023-11-11 23:46:51 +03:00
parent bc29641288
commit c4c15df366
2 changed files with 30 additions and 2 deletions

@ -26,8 +26,9 @@ export const signin = async (
return [signinResponse];
} catch (nativeError) {
console.log(nativeError)
const [error] = parseAxiosError(nativeError);
console.log(error)
return [null, `Ошибка авторизации. ${error}`];
}
};

@ -1,9 +1,36 @@
import { AxiosError } from "axios";
export type ServerError = {
statusCode: number;
error: string;
message: string;
};
const translateMessage: Record<string, string> = {
"user not found": "Пользователь не найден",
"invalid password": "Неправильный пароль",
"field <password> is empty": "Поле \"Пароль\" не заполнено",
"field <login> is empty": "Поле \"Логин\" не заполнено",
"field <email> is empty": "Поле \"E-mail\" не заполнено",
"field <phoneNumber> 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;
switch (error.status) {
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.response?.status) {
case 404:
return ["Не найдено.", error.status];