import React, { useEffect, useLayoutEffect, useState } from "react";
import { Alert, Box, Button, TextField } from "@mui/material";
import {
useNotification,
useReCaptchaSiteKey,
useUser,
useWidth,
} from "../../components/ContextProvider";
import MetahkgLogo from "../../components/logo";
import { severity } from "../../types/severity";
import { useMenu } from "../../components/MenuProvider";
import { Navigate } from "react-router-dom";
import queryString from "query-string";
import EmailValidator from "email-validator";
import { Send as SendIcon } from "@mui/icons-material";
import ReCAPTCHA from "react-google-recaptcha";
import { api } from "../../lib/api";
import { setTitle } from "../../lib/common";
import { parseError } from "../../lib/parseError";
declare const grecaptcha: { reset: () => void };
export default function Verify() {
const [menu, setMenu] = useMenu();
const [, setNotification] = useNotification();
const [width] = useWidth();
const [alert, setAlert] = useState<{ severity: severity; text: string }>({
severity: "info",
text: "",
});
const [disabled, setDisabled] = useState(false);
const query = queryString.parse(window.location.search);
const [email, setEmail] = useState(String(query.email || ""));
const [rtoken, setRtoken] = useState("");
const [user] = useUser();
const reCaptchaSiteKey = useReCaptchaSiteKey();
const small = width / 2 - 100 <= 450;
useLayoutEffect(() => {
setTitle("Resend Verification Email | Metahkg");
menu && setMenu(false);
}, [menu, setMenu, user]);
if (user) ;
function onSubmit(e?: React.FormEvent) {
e?.preventDefault();
setAlert({ severity: "info", text: "Requesting resend..." });
setNotification({ open: true, text: "Requesting resend..." });
setDisabled(true);
api.usersResend({ email, rtoken })
.then(() => {
setNotification({
open: true,
text: `Verification email sent.`,
});
setAlert({
severity: "success",
text: "Verification email sent.",
});
grecaptcha.reset();
setRtoken("");
setDisabled(false);
})
.catch((err) => {
setAlert({
severity: "error",
text: parseError(err),
});
setNotification({
open: true,
text: parseError(err),
});
grecaptcha.reset();
setRtoken("");
setDisabled(false);
});
}
useEffect(() => {
if (query.email && !user) onSubmit();
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
return (
Resend Verification Email
{alert.text && (
{alert.text}
)}
{
setEmail(e.target.value);
}}
variant="filled"
color="secondary"
required
fullWidth
/>
{
setRtoken(token || "");
}}
/>
);
}