From 42173615a5a3c70e233d739db6e22ed593ab11bf Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 9 Feb 2026 01:43:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=B3=A8=E5=86=8C=E6=88=90?= =?UTF-8?q?=E5=8A=9F=E5=90=8E=E9=95=BF=E6=97=B6=E9=97=B4=E5=A4=84=E7=90=86?= =?UTF-8?q?=E4=B8=AD=E4=B8=8D=E8=B7=B3=E8=BD=AC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/(auth)/register/page.tsx | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/app/(auth)/register/page.tsx b/app/(auth)/register/page.tsx index 672c37b..0ea84f2 100644 --- a/app/(auth)/register/page.tsx +++ b/app/(auth)/register/page.tsx @@ -2,8 +2,7 @@ import Link from "next/link"; import { useRouter } from "next/navigation"; -import { useSession } from "next-auth/react"; -import { useActionState, useEffect, useState } from "react"; +import { useActionState, useEffect, useRef, useState } from "react"; import { AuthForm } from "@/components/auth-form"; import { SubmitButton } from "@/components/submit-button"; import { toast } from "@/components/toast"; @@ -16,6 +15,7 @@ export default function Page() { const [isSuccessful, setIsSuccessful] = useState(false); const [siteName, setSiteName] = useState("AI Chatbot"); const [siteLogo, setSiteLogo] = useState(null); + const redirectTimerRef = useRef(null); useEffect(() => { // 获取认证设置并检查是否开放注册 @@ -46,28 +46,42 @@ export default function Page() { } ); - const { update: updateSession } = useSession(); - - // biome-ignore lint/correctness/useExhaustiveDependencies: router and updateSession are stable refs + // biome-ignore lint/correctness/useExhaustiveDependencies: router is a stable ref useEffect(() => { + if (redirectTimerRef.current) { + window.clearTimeout(redirectTimerRef.current); + redirectTimerRef.current = null; + } + if (state.status === "user_exists") { + setIsSuccessful(false); toast({ type: "error", description: "账号已存在" }); } else if (state.status === "failed") { + setIsSuccessful(false); toast({ type: "error", description: "创建账号失败" }); } else if (state.status === "invalid_data") { + setIsSuccessful(false); toast({ type: "error", description: "提交的信息校验失败", }); } else if (state.status === "success") { toast({ type: "success", description: "账号创建成功" }); - setIsSuccessful(true); - updateSession(); - router.refresh(); + redirectTimerRef.current = window.setTimeout(() => { + window.location.replace("/"); + }, 300); } }, [state.status]); + useEffect(() => { + return () => { + if (redirectTimerRef.current) { + window.clearTimeout(redirectTimerRef.current); + } + }; + }, []); + const handleSubmit = (formData: FormData) => { setEmail(formData.get("email") as string); formAction(formData);