import * as React from "react"; import { Link, useNavigate } from "react-router-dom"; import { useTranslation, Trans } from "react-i18next"; import { useUser, userService } from "@/services/user"; import AppBar from "../common/AppBar"; import LoadingButton from "../common/button/LoadingButton"; import "./index.css"; const LoginPage: React.FC = () => { const { t } = useTranslation(); const navigate = useNavigate(); const [username, setUsername] = React.useState(""); const [usernameDirty, setUsernameDirty] = React.useState(false); const [password, setPassword] = React.useState(""); const [passwordDirty, setPasswordDirty] = React.useState(false); const [rememberMe, setRememberMe] = React.useState(true); const [process, setProcess] = React.useState(false); const [error, setError] = React.useState(null); const user = useUser(); React.useEffect(() => { if (user != null) { const id = setTimeout(() => navigate("/"), 3000); return () => { clearTimeout(id); }; } }, [navigate, user]); if (user != null) { return ( <>

{t("login.alreadyLogin")}

); } const submit = (): void => { if (username === "" || password === "") { setUsernameDirty(true); setPasswordDirty(true); return; } setProcess(true); userService .login( { username: username, password: password, }, rememberMe ) .then( () => { if (history.length === 0) { navigate("/"); } else { navigate(-1); } }, (e: Error) => { setProcess(false); setError(e.message); } ); }; const onEnterPressInPassword: React.KeyboardEventHandler = (e) => { if (e.key === "Enter") { submit(); } }; return (

{t("welcome")}

{ setUsername(e.target.value); setUsernameDirty(true); }} value={username} /> {usernameDirty && username === "" && (
{t("login.emptyUsername")}
)}
{ setPassword(e.target.value); setPasswordDirty(true); }} value={password} onKeyDown={onEnterPressInPassword} /> {passwordDirty && password === "" && (
{t("login.emptyPassword")}
)}
{ setRememberMe(e.currentTarget.checked); }} />
{error ?

{t(error)}

: null}
{ submit(); e.preventDefault(); }} disabled={username === "" || password === "" ? true : undefined} > {t("user.login")}
012
); }; export default LoginPage;