parent
1ea66824d0
commit
3dfaad8704
3 changed files with 100 additions and 37 deletions
@ -0,0 +1,84 @@ |
||||
import VerifyLetterIcon from '../../icons/verify-letter.svg'; |
||||
import { useEffect, useState } from 'preact/hooks'; |
||||
|
||||
export function VerificationEmailMessage() { |
||||
const [email, setEmail] = useState('..'); |
||||
const [error, setError] = useState(''); |
||||
const [isLoading, setIsLoading] = useState(false); |
||||
const [isEmailResent, setIsEmailResent] = useState(false); |
||||
|
||||
useEffect(() => { |
||||
const urlParams = new URLSearchParams(window.location.search); |
||||
|
||||
setEmail(urlParams.get('email')!); |
||||
}, []); |
||||
|
||||
const resendVerificationEmail = () => { |
||||
fetch(`${import.meta.env.PUBLIC_API_URL}/v1-send-verification-email`, { |
||||
method: 'POST', |
||||
headers: { |
||||
'Content-Type': 'application/json', |
||||
}, |
||||
body: JSON.stringify({ |
||||
email, |
||||
}), |
||||
}) |
||||
.then((res) => { |
||||
if (!res.ok) { |
||||
throw new Error('Something went wrong. Please try again later.'); |
||||
} |
||||
|
||||
setIsEmailResent(true); |
||||
}) |
||||
.catch(() => { |
||||
setIsEmailResent(false); |
||||
setIsLoading(false); |
||||
setError('Something went wrong. Please try again later.'); |
||||
}); |
||||
}; |
||||
|
||||
return ( |
||||
<div className="mx-auto max-w-md text-center"> |
||||
<img |
||||
alt="Verify Email" |
||||
src={VerifyLetterIcon} |
||||
class="mx-auto mb-4 h-20 w-40 sm:h-40" |
||||
/> |
||||
<h2 class="my-2 text-center text-xl font-semibold sm:my-5 sm:text-2xl"> |
||||
Verify your email address |
||||
</h2> |
||||
<div class="text-sm sm:text-base"> |
||||
<p> |
||||
We have you an email at <span className="font-bold">{email}</span>. |
||||
Please click the link to verify your account. This link will expire |
||||
shortly, so please verify soon! |
||||
</p> |
||||
|
||||
<hr class="my-4" /> |
||||
|
||||
{!isEmailResent && ( |
||||
<> |
||||
{isLoading && <p className="text-gray-400">Sending the email ..</p>} |
||||
{!isLoading && !error && ( |
||||
<p> |
||||
Please make sure to check your spam folder. If you still don't |
||||
have the email click to{' '} |
||||
<button |
||||
disabled={!email} |
||||
className="inline text-blue-700" |
||||
onClick={resendVerificationEmail} |
||||
> |
||||
resend verification email. |
||||
</button> |
||||
</p> |
||||
)} |
||||
|
||||
{error && <p class="text-red-700">{error}</p>} |
||||
</> |
||||
)} |
||||
|
||||
{isEmailResent && <p class="text-green-700">Email sent!</p>} |
||||
</div> |
||||
</div> |
||||
); |
||||
} |
Loading…
Reference in new issue