diff --git a/src/api/auth.ts b/src/api/auth.ts index c794a4e..b878ad3 100644 --- a/src/api/auth.ts +++ b/src/api/auth.ts @@ -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}`]; } }; diff --git a/src/utils/parse-error.ts b/src/utils/parse-error.ts index 8d44688..8d0df90 100644 --- a/src/utils/parse-error.ts +++ b/src/utils/parse-error.ts @@ -1,9 +1,36 @@ import { 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; - 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];