From c4c15df366c7860c5ee7e09bccfe8ee048396d80 Mon Sep 17 00:00:00 2001 From: Tamara Date: Sat, 11 Nov 2023 23:46:51 +0300 Subject: [PATCH] =?UTF-8?q?=D1=87=D0=B5=D0=BB=D0=BE=D0=B2=D0=B5=D0=BA?= =?UTF-8?q?=D0=BE=D0=BF=D0=BE=D0=BD=D1=8F=D1=82=D0=BD=D1=8B=D0=B9=20=D0=BF?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=B2=D0=BE=D0=B4=20=D0=BE=D1=88=D0=B8=D0=B1?= =?UTF-8?q?=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/auth.ts | 3 ++- src/utils/parse-error.ts | 29 ++++++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) 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];