import { useAtomValue } from 'jotai'; import { FormEvent, useEffect, useRef, useState } from 'react'; import { authAtom, useLogin, useLogout } from '../../../../state/auth'; import { decodeToken, parseTokenExpire } from '../../../../utility'; import { Button, InputGroup } from '../../../UI'; import classes from '../AppDetails.module.css'; export const AuthForm = (): JSX.Element => { const { isAuthenticated, token } = useAtomValue(authAtom); const login = useLogin(); const logout = useLogout(); const [tokenExpires, setTokenExpires] = useState(''); const [formData, setFormData] = useState({ password: '', duration: '14d', }); const passwordInputRef = useRef(null); useEffect(() => { passwordInputRef.current?.focus(); }, []); useEffect(() => { if (token) { const decoded = decodeToken(token); const expiresIn = parseTokenExpire(decoded.exp); setTokenExpires(expiresIn); } }, [token]); const formHandler = (e: FormEvent) => { e.preventDefault(); login(formData); setFormData({ password: '', duration: '14d', }); }; return ( <> {!isAuthenticated ? (
setFormData({ ...formData, password: e.target.value }) } /> See {` project wiki `} to read more about authentication
) : (

You are logged in. Your session will expire{' '} {tokenExpires}

)} ); };