import React, { Fragment, useState, useEffect } from 'react'; import { useHistory } from 'react-router'; import { useTranslation } from 'react-i18next'; import AppBar from '../common/AppBar'; import { useUser, userService } from '../data/user'; import { Label, FormGroup, Input, Form, FormFeedback, Spinner, Button, } from 'reactstrap'; const Login: React.FC = (_) => { const { t } = useTranslation(); const history = useHistory(); const [username, setUsername] = useState(''); const [usernameDirty, setUsernameDirty] = useState(false); const [password, setPassword] = useState(''); const [passwordDirty, setPasswordDirty] = useState(false); const [rememberMe, setRememberMe] = useState(true); const [process, setProcess] = useState(false); const [error, setError] = useState(null); const user = useUser(); useEffect(() => { if (user != null) { const id = setTimeout(() => history.push('/'), 3000); return () => { clearTimeout(id); }; } }, [history, user]); if (user != null) { return ( <>

{t('login.alreadyLogin')}

); } function onSubmit(event: React.SyntheticEvent): void { if (username === '' || password === '') { setUsernameDirty(true); setPasswordDirty(true); return; } setProcess(true); userService .login( { username: username, password: password, }, rememberMe ) .subscribe( (_) => { if (history.length === 0) { history.push('/'); } else { history.goBack(); } }, (e: Error) => { setProcess(false); setError(e.message); } ); event.preventDefault(); } return (

{t('welcome')}

{ setUsername(e.target.value); setUsernameDirty(true); }} value={username} invalid={usernameDirty && username === ''} /> {usernameDirty && username === '' && ( {t('login.emptyUsername')} )} { setPassword(e.target.value); setPasswordDirty(true); }} value={password} invalid={passwordDirty && password === ''} /> {passwordDirty && password === '' && ( {t('login.emptyPassword')} )} { const v = (e.target as HTMLInputElement).checked; setRememberMe(v); }} /> {error ?

{t(error)}

: null}
{process ? ( ) : ( )}
); }; export default Login;