Просмотр исходного кода

use IErrorV3 type and change elements for displaying errors

Yohei-Shiina 3 лет назад
Родитель
Сommit
8a48a4a911
1 измененных файлов с 15 добавлено и 13 удалено
  1. 15 13
      packages/app/src/components/LoginForm.tsx

+ 15 - 13
packages/app/src/components/LoginForm.tsx

@@ -7,6 +7,7 @@ import { useRouter } from 'next/router';
 import ReactCardFlip from 'react-card-flip';
 import ReactCardFlip from 'react-card-flip';
 
 
 import { apiv3Post } from '~/client/util/apiv3-client';
 import { apiv3Post } from '~/client/util/apiv3-client';
+import { IErrorV3 } from '~/interfaces/errors/v3-error';
 
 
 type LoginFormProps = {
 type LoginFormProps = {
   username?: string,
   username?: string,
@@ -38,13 +39,13 @@ export const LoginForm = (props: LoginFormProps): JSX.Element => {
   // For Login
   // For Login
   const [usernameForLogin, setUsernameForLogin] = useState('');
   const [usernameForLogin, setUsernameForLogin] = useState('');
   const [passwordForLogin, setPasswordForLogin] = useState('');
   const [passwordForLogin, setPasswordForLogin] = useState('');
-  const [loginErrors, setLoginErrors] = useState<Error[]>([]);
+  const [loginErrors, setLoginErrors] = useState<IErrorV3[]>([]);
   // For Register
   // For Register
   const [usernameForRegister, setUsernameForRegister] = useState('');
   const [usernameForRegister, setUsernameForRegister] = useState('');
   const [nameForRegister, setNameForRegister] = useState('');
   const [nameForRegister, setNameForRegister] = useState('');
   const [emailForRegister, setEmailForRegister] = useState('');
   const [emailForRegister, setEmailForRegister] = useState('');
   const [passwordForRegister, setPasswordForRegister] = useState('');
   const [passwordForRegister, setPasswordForRegister] = useState('');
-  const [registerErrors, setRegisterErrors] = useState<Error[]>([]);
+  const [registerErrors, setRegisterErrors] = useState<IErrorV3[]>([]);
 
 
   useEffect(() => {
   useEffect(() => {
     const { hash } = window.location;
     const { hash } = window.location;
@@ -60,8 +61,14 @@ export const LoginForm = (props: LoginFormProps): JSX.Element => {
     window.location.href = `/passport/${auth}`;
     window.location.href = `/passport/${auth}`;
   }, []);
   }, []);
 
 
+  const resetLoginErrors = useCallback(() => {
+    if (loginErrors.length === 0) return;
+    setLoginErrors([]);
+  }, [loginErrors.length]);
+
   const handleLoginWithLocalSubmit = useCallback(async(e) => {
   const handleLoginWithLocalSubmit = useCallback(async(e) => {
     e.preventDefault();
     e.preventDefault();
+    resetLoginErrors();
 
 
     const loginForm = {
     const loginForm = {
       username: usernameForLogin,
       username: usernameForLogin,
@@ -78,7 +85,7 @@ export const LoginForm = (props: LoginFormProps): JSX.Element => {
     }
     }
     return;
     return;
 
 
-  }, [passwordForLogin, router, usernameForLogin]);
+  }, [passwordForLogin, resetLoginErrors, router, usernameForLogin]);
 
 
   const renderLocalOrLdapLoginForm = useCallback(() => {
   const renderLocalOrLdapLoginForm = useCallback(() => {
     const { isLdapStrategySetup } = props;
     const { isLdapStrategySetup } = props;
@@ -86,15 +93,15 @@ export const LoginForm = (props: LoginFormProps): JSX.Element => {
       <>
       <>
         {
         {
           loginErrors != null && loginErrors.length > 0 && (
           loginErrors != null && loginErrors.length > 0 && (
-            <p className="alert alert-danger">
+            <ul className="alert alert-danger">
               {loginErrors.map((err, index) => {
               {loginErrors.map((err, index) => {
                 return (
                 return (
-                  <span key={index}>
-                    {t(err.message)}<br/>
-                  </span>
+                  <li key={index}>
+                    {t(err.message, err.i18nArg)}<br/>
+                  </li>
                 );
                 );
               })}
               })}
-            </p>
+            </ul>
           )
           )
         }
         }
         <form role="form" onSubmit={handleLoginWithLocalSubmit} id="login-form">
         <form role="form" onSubmit={handleLoginWithLocalSubmit} id="login-form">
@@ -222,11 +229,6 @@ export const LoginForm = (props: LoginFormProps): JSX.Element => {
     return;
     return;
   }, [emailForRegister, nameForRegister, passwordForRegister, router, usernameForRegister]);
   }, [emailForRegister, nameForRegister, passwordForRegister, router, usernameForRegister]);
 
 
-  const resetLoginErrors = useCallback(() => {
-    if (loginErrors.length === 0) return;
-    setLoginErrors([]);
-  }, [loginErrors.length]);
-
   const resetRegisterErrors = useCallback(() => {
   const resetRegisterErrors = useCallback(() => {
     if (registerErrors.length === 0) return;
     if (registerErrors.length === 0) return;
     setRegisterErrors([]);
     setRegisterErrors([]);