From ef354f1643793f87f8b090923b79bab300f7f3f3 Mon Sep 17 00:00:00 2001 From: fundon <27926+fundon@users.noreply.github.com> Date: Thu, 28 Mar 2024 07:35:32 +0000 Subject: [PATCH] fix(core): prevent frequent sign-in (#6339) --- .../affine/auth/sign-in-with-password.tsx | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/packages/frontend/core/src/components/affine/auth/sign-in-with-password.tsx b/packages/frontend/core/src/components/affine/auth/sign-in-with-password.tsx index e5e6ff851..b6765d2cf 100644 --- a/packages/frontend/core/src/components/affine/auth/sign-in-with-password.tsx +++ b/packages/frontend/core/src/components/affine/auth/sign-in-with-password.tsx @@ -35,20 +35,26 @@ export const SignInWithPassword: FC = ({ isMutating: sendingEmail, } = useAuth(); const [verifyToken, challenge] = useCaptcha(); + const [isLoading, setIsLoading] = useState(false); const onSignIn = useAsyncCallback(async () => { + if (isLoading) return; + setIsLoading(true); + const res = await signInCloud('credentials', { email, password, }).catch(console.error); - if (!res?.ok) { - return setPasswordError(true); + if (res?.ok) { + await reload(); + onSignedIn?.(); + } else { + setPasswordError(true); } - await reload(); - onSignedIn?.(); - }, [email, password, onSignedIn, reload]); + setIsLoading(false); + }, [email, password, isLoading, onSignedIn, reload]); const sendMagicLink = useAsyncCallback(async () => { if (allowSendEmail && verifyToken && !sendingEmail) { @@ -134,6 +140,7 @@ export const SignInWithPassword: FC = ({ type="primary" size="extraLarge" style={{ width: '100%' }} + disabled={isLoading} onClick={onSignIn} > {t['com.affine.auth.sign.in']()}