import { useState, useLayoutEffect, useCallback } from "react"; import { useLocation, Link, useNavigate } from "react-router-dom"; import AuthLayout from "../AuthLayout"; import InputCom from "../../Helpers/Inputs/InputCom"; import usersService from "../../../services/UsersService"; import WrenchBoard from "../../../assets/images/wrenchboard.png"; import debounce from "../../../hooks/debounce"; export default function VerifyLink() { const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [msgError, setMsgError] = useState(""); const [linkLoader, setLinkLoader] = useState(false); const [pageLoader, setPageLoader] = useState(true); const [linkSuccess, setLinkSuccess] = useState(true); const navigate = useNavigate(); const location = useLocation(); const queryParams = new URLSearchParams(location?.search); const token = queryParams.get("vlnk"); const userApi = new usersService(); // email const handleEmail = (e) => { setEmail(e.target.value); }; // password const handlePassword = (e) => { setPassword(e.target.value); }; // for verifying the incoming verification link and render the correct component const verifyEmail = useCallback(async (code) => { try { const verifyRes = await userApi.verifyEmail(code); if (verifyRes.status === 200) { let { data } = verifyRes; if ( data && data.internal_return >= 0 && data.status_text === "Link Verfied" ) { setPageLoader(false); } else { setPageLoader(false); setLinkSuccess(false); } } } catch (error) { setPageLoader(false); setLinkSuccess(false); throw new Error(error); } }, []); // delay verify requests by 10000ms const debouncedEmail = debounce(verifyEmail, 1000); // if verification is okay. set a complete signup form const completeSignup = async () => { if (email === "" && password === "") { setMsgError("Please fill in fields"); } try { if (email !== "" && password !== "") { setLinkLoader(true); var postData = { username: email, password: password, login_mode: 100, sessionid: "STARTER-NOTREAL", verify_link: token, action: 11012, }; const res = await userApi.CompleteSignUp(postData); if (res.status === 200) { const { data } = res; if ( data?.status > 0 && data?.internal_return == 100 && data?.session != "" ) { localStorage.setItem("email", `${data?.email}`); localStorage.setItem("member_id", `${data?.member_id}`); localStorage.setItem("session_token", `${data?.session}`); localStorage.setItem("added", `${data?.added}`); localStorage.setItem("city", `${data?.city}`); localStorage.setItem("country", `${data?.country}`); localStorage.setItem("firstname", `${data?.firstname}`); localStorage.setItem("last_login", `${data?.last_login}`); localStorage.setItem("lastname", `${data?.lastname}`); localStorage.setItem("state", `${data?.state}`); localStorage.setItem("zip_code", `${data?.zip_code}`); localStorage.setItem("session", `${data?.session}`); navigate("/", { replace: true }); setLinkLoader(false); } else { setLinkLoader(false); setMsgError("Invalid Link or Password Combination"); } } else { setLinkLoader(false); setLinkSuccess(false) setMsgError("An error occurred"); } } } catch (error) { setLinkLoader(false); setLinkSuccess(false) throw new Error(error); } finally { setTimeout(() => { setMsgError(null); }, process.env.REACT_APP_SIGNUP_ERROR_TIMEOUT); } }; useLayoutEffect(() => { debouncedEmail(token); }); return ( <> {pageLoader ? ( wrenchboard ) : (
wrenchboard

{linkSuccess ? "Sign In to WrenchBoard" : "Invalid verification link"}

{/* If the verification was a success */} {linkSuccess ? ( ) : ( navigate("/login")} /> )}
)}
); } const SuccessfulComponent = ({ onSubmit, password, handlePassword, email, handleEmail, msgErr, loader, }) => (
{/* INPUT */}
{msgErr && (
{msgErr}
)}
); const ErrorComponent = ({ onClick }) => (

This error occurs because you have already verified this link or the link has expired. Try login or reset password. If none worked, try to create the account from the start.

);