import styles from 'styles/Main.module.scss' import { useState } from 'react' import useUser from 'hooks/useUser' import useSettings from 'hooks/useSettings' import fetchJson from 'helpers/fetchJson' import { Layout } from 'components' import Splash from 'components/Splash' const Verify = () => { const { t } = useSettings() const [errorMsg, setErrorMsg] = useState('') const [loading, setLoading] = useState(false) const [sending, setSending] = useState(false) const [resent, setResent] = useState(false) const { user, mutateUser } = useUser({ redirectToLogin: true, redirectToApps: true }) const handleSendMail = async e => { e.preventDefault() setErrorMsg('') setSending(true) try { await fetch('/api/verify') setResent(true) } catch (error) { setErrorMsg(t('verification_mail_error')) } finally { setSending(false) } } const handleKey = async e => { e.preventDefault() setLoading(true) const key = e.currentTarget.key.value try { mutateUser( await fetchJson('/api/verify', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ _id: user._id, key }) }) ) } catch (err) { setErrorMsg(t('verification_error')) } finally { setLoading(false) } } return ( {!user || loading ? ( ) : (

{t('verification_title')}

{`${t('verification_text')} ${user.email}`}

{ sending ? (

{t('sending')}

) : ( resent ? (

{t('verification_sent_again')}

) : (

{t('verification_not_received')}  {t('verification_send_again')}.

) ) } {errorMsg &&

{errorMsg}

}
)}
) } export default Verify