From 6ce2d9819e57709e20c50e1b3e1f41ca70a23e91 Mon Sep 17 00:00:00 2001 From: Somay Chauhan Date: Tue, 19 Dec 2023 21:17:54 +0530 Subject: [PATCH] fix: multiple bookings created on verify-email (#12864) Co-authored-by: Rajiv Sahal --- packages/features/bookings/components/VerifyCodeDialog.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/features/bookings/components/VerifyCodeDialog.tsx b/packages/features/bookings/components/VerifyCodeDialog.tsx index f1550ea31f5b79..c371e292778824 100644 --- a/packages/features/bookings/components/VerifyCodeDialog.tsx +++ b/packages/features/bookings/components/VerifyCodeDialog.tsx @@ -25,6 +25,7 @@ export const VerifyCodeDialog = ({ const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(""); const [value, setValue] = useState(""); + const [hasVerified, setHasVerified] = useState(false); const digits = useDigitInput({ acceptedCharacters: /^[0-9]$/, @@ -77,6 +78,7 @@ export const VerifyCodeDialog = ({ email, }); } + setHasVerified(true); }, [ email, isUserSessionRequiredToVerify, @@ -89,10 +91,10 @@ export const VerifyCodeDialog = ({ // 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 // 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(); - }, [error, isLoading, value, verifyCode]); + }, [error, isLoading, value, verifyCode, hasVerified]); useEffect(() => setValue(""), [isOpenDialog]);