From b8c439d2d7b26f58c7ecf657057f1a4103312e76 Mon Sep 17 00:00:00 2001 From: smanylov Date: Wed, 4 Mar 2026 17:16:30 +0700 Subject: [PATCH] add error message handler, add request animation --- package.json | 2 +- src/app/actions/auth.ts | 34 +++++++++++++++++-- .../ui/forms/confirm-mail-modal-window.tsx | 7 +++- src/app/ui/forms/forgot-password-form.tsx | 11 +++++- src/app/ui/forms/reset-password-form.tsx | 17 +++++++--- .../modal-windows/file-info-modal-window.tsx | 2 -- src/i18n/messages/en.json | 3 +- src/i18n/messages/ru.json | 3 +- 8 files changed, 65 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index 29232a7..6b5ccfc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "no-copy-frontend", - "version": "0.50.0", + "version": "0.51.0", "private": true, "scripts": { "dev": "next dev -p 2999", diff --git a/src/app/actions/auth.ts b/src/app/actions/auth.ts index 136171f..8ef33e2 100644 --- a/src/app/actions/auth.ts +++ b/src/app/actions/auth.ts @@ -619,16 +619,35 @@ export async function confirmPassword( if (parsed.message_code === 0) { await createSession(parsed.message_body.authToken, email as string); } else { - throw parsed.message_body; + throw parsed; } } else { throw (`${response.status}`); } } catch (error: unknown) { - const typedError = error as any; const errors: Record = {}; if (error) { + const typedError = error as any; + + switch (typedError.message_code) { + case 1: + errors['server'] = 'unknown-error' + break + + case 2: + if (typedError.message_desc === 'Token not found or time expired') { + errors['server'] = 'token-not-found-or-time-expired' + } else { + errors['server'] = 'unknown-error' + } + break; + + default: + errors['server'] = 'request-ended-with-an-error' + break; + } + return { previousState: { email, @@ -639,7 +658,16 @@ export async function confirmPassword( error: errors }; } - throw error; + + return { + previousState: { + email, + password, + confirm_password, + verifyToken + }, + error: errors + }; } redirect('/pages/dashboard'); diff --git a/src/app/ui/forms/confirm-mail-modal-window.tsx b/src/app/ui/forms/confirm-mail-modal-window.tsx index 48f4c73..c7ad429 100644 --- a/src/app/ui/forms/confirm-mail-modal-window.tsx +++ b/src/app/ui/forms/confirm-mail-modal-window.tsx @@ -115,7 +115,12 @@ export default function ConfirmMailModalWindow({ userId, email, onClose }: { use className={`${styles['btn']}`} disabled={confirmCodeValue.length !== 6 || isPending} > - {isPending ? t('confirming') : t('confirm')} + {t('confirm')} + {isPending && ( +
+
+
+ )} ) diff --git a/src/app/ui/forms/reset-password-form.tsx b/src/app/ui/forms/reset-password-form.tsx index aab0e9e..67a10ed 100644 --- a/src/app/ui/forms/reset-password-form.tsx +++ b/src/app/ui/forms/reset-password-form.tsx @@ -194,13 +194,22 @@ export default function ResetPasswordForm() {

)} - {/* {state?.error.server && ( + {formState?.error?.server && (

- {t(state?.error.server)} + {t(formState?.error?.server)}

- )} */} - ) diff --git a/src/app/ui/modal-windows/file-info-modal-window.tsx b/src/app/ui/modal-windows/file-info-modal-window.tsx index 7437b47..0b65e29 100644 --- a/src/app/ui/modal-windows/file-info-modal-window.tsx +++ b/src/app/ui/modal-windows/file-info-modal-window.tsx @@ -5,8 +5,6 @@ import { useTranslations } from 'next-intl'; export function FileInfoModalWindow({ fileInfo, setWindowClose, setWindowChildren }: any) { const t = useTranslations('Global'); - console.log(fileInfo); - return (
diff --git a/src/i18n/messages/en.json b/src/i18n/messages/en.json index 8ab6472..13756cd 100644 --- a/src/i18n/messages/en.json +++ b/src/i18n/messages/en.json @@ -385,6 +385,7 @@ "company-already-registered": "The company is already registered.", "confirming" : "Confirming", "server-error": "Server error", - "network-error": "Network error" + "network-error": "Network error", + "token-not-found-or-time-expired": "Token not found or time expired" } } \ No newline at end of file diff --git a/src/i18n/messages/ru.json b/src/i18n/messages/ru.json index 98a377f..c36da03 100644 --- a/src/i18n/messages/ru.json +++ b/src/i18n/messages/ru.json @@ -385,6 +385,7 @@ "company-already-registered": "Компания уже зарегистрирована.", "confirming": "Подтверждение", "server-error": "Ошибка сервера", - "network-error": "Сетевая ошибка" + "network-error": "Сетевая ошибка", + "token-not-found-or-time-expired": "Токен не найден или истек срок его действия." } } \ No newline at end of file