import React, { useState } from 'react'; import { useAppContext } from './app'; import { flash } from './toast'; import { Link } from 'react-router-dom'; import Logo from './logo'; const Login: React.FC<{}> = () => { const [submitting, setSubmitting] = useState(false); const { request, setState, redirect } = useAppContext() as any; const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const [showPassword, setShowPassword] = useState(false); const handleTogglePassword = () => setShowPassword(!showPassword); const handleSubmit = (event: React.FormEvent) => { event.preventDefault(); if (!username.trim()) { flash('Please enter a username'); return; } if (!password) { flash('Please enter a password'); return; } if (!username || !password) { flash('Please enter both username and password'); return; } setSubmitting(true); request('/login', 'POST', { username, password }, false) .then((result: { token: string; key: string; iv: string }) => { localStorage.setItem('token', JSON.stringify({ token: result.token, key: result.key, iv: result.iv })); setState({ token: result.token, key: result.key, iv: result.iv }); redirect('/'); }) .catch((error: any) => { flash('An error occurred'); console.error(error); }) .finally(() => { setSubmitting(false); }); }; return (

Login

{submitting ? (

Submitting...

) : ( <>
setUsername(e.target.value)} type="text" id="username" name="username" />
setPassword(e.target.value)} type={showPassword ? "text" : "password"} id="password" name="password" />
No account, Sign Up!
Forgot your password? Click here to reset it.
)}
); } export default Login;