修复注册成功后长时间处理中不跳转问题
This commit is contained in:
parent
1e07c6ae26
commit
42173615a5
@ -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<string | null>(null);
|
||||
const redirectTimerRef = useRef<number | null>(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);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user