fix: multiple bookings created on verify-email (#12864)

Co-authored-by: Rajiv Sahal <sahalrajiv-extc@atharvacoe.ac.in>
This commit is contained in:
Somay Chauhan 2023-12-19 21:17:54 +05:30 committed by GitHub
parent 2e0c9c7068
commit 6ce2d9819e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -25,6 +25,7 @@ export const VerifyCodeDialog = ({
const [isLoading, setIsLoading] = useState(false); const [isLoading, setIsLoading] = useState(false);
const [error, setError] = useState(""); const [error, setError] = useState("");
const [value, setValue] = useState(""); const [value, setValue] = useState("");
const [hasVerified, setHasVerified] = useState(false);
const digits = useDigitInput({ const digits = useDigitInput({
acceptedCharacters: /^[0-9]$/, acceptedCharacters: /^[0-9]$/,
@ -77,6 +78,7 @@ export const VerifyCodeDialog = ({
email, email,
}); });
} }
setHasVerified(true);
}, [ }, [
email, email,
isUserSessionRequiredToVerify, isUserSessionRequiredToVerify,
@ -89,10 +91,10 @@ export const VerifyCodeDialog = ({
// trim the input value because "react-digit-input" creates a string of the given length, // trim the input value because "react-digit-input" creates a string of the given length,
// even when some digits are missing. And finally we use regex to check if the value consists // even when some digits are missing. And finally we use regex to check if the value consists
// of 6 non-empty digits. // of 6 non-empty digits.
if (error || isLoading || !/^\d{6}$/.test(value.trim())) return; if (hasVerified || error || isLoading || !/^\d{6}$/.test(value.trim())) return;
verifyCode(); verifyCode();
}, [error, isLoading, value, verifyCode]); }, [error, isLoading, value, verifyCode, hasVerified]);
useEffect(() => setValue(""), [isOpenDialog]); useEffect(() => setValue(""), [isOpenDialog]);