From 464e470441287572cfda8d95484f781236b9db35 Mon Sep 17 00:00:00 2001 From: piotrruss Date: Mon, 9 Aug 2021 21:36:03 +0200 Subject: init commit --- pages/verify.js | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 pages/verify.js (limited to 'pages/verify.js') diff --git a/pages/verify.js b/pages/verify.js new file mode 100644 index 0000000..1d89e22 --- /dev/null +++ b/pages/verify.js @@ -0,0 +1,109 @@ +import {useState, useEffect} from 'react' +import {useRouter} from 'next/router' +import useUser from 'lib/useUser' +import fetchJson from 'lib/fetchJson' +import {Layout} from 'components' + +const Verify = () => { + const router = useRouter() + const {user, mutateUser} = useUser({ + redirectToLogin: true, + redirectToApps: true, + }) + const [errorMsg, setErrorMsg] = useState('') + const [sending, setSending] = useState(false) + const [resent, setResent] = useState(false) + + const handleSendMail = async e => { + e.preventDefault() + setErrorMsg('') + setSending(true) + try { + await fetch('/api/verify') + setResent(true) + } catch (error) { + setErrorMsg('Could not send verification email') + } finally { + setSending(false) + } + } + + const handleKey = async e => { + e.preventDefault() + 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('Could not verify user') + } + } + + return ( + + {!user + ? ( +
+

Loading...

+
+ ) : ( +
+

One last step missing

+

{`To start using Notes App type the verification code we sent to your email (${user.email}):`}

+
+ + +
+ { + sending + ? ( +

Sending...

+ ) : ( + resent + ? ( +

Mail was successfully sent again, check your mailbox!

+ ) : ( +

If you didn't get verification email  + send it again. +

+ ) + ) + } + {errorMsg &&

{errorMsg}

} +
+ ) + } + +
+ ) +} + +export default Verify -- cgit v1.2.3