feat: 接入 mnote web tree shell 与主页链路整理
- 增加 mnote-web tree/command 支持与前端 MnoteWebTreeShell 集成 - 调整 sidebar、documents、runtime config 与 dev/prod server 配套逻辑 - 补充 homepage/tree shell smoke 脚本并更新 harness 进度文件
This commit is contained in:
@@ -31,14 +31,22 @@ export default function AuthPage() {
|
||||
|
||||
const currentUser = useQuery(api.users.currentUser, isAuthenticated ? {} : "skip");
|
||||
|
||||
const navigateToHome = useCallback(() => {
|
||||
if (typeof window !== "undefined") {
|
||||
window.location.assign("/");
|
||||
return;
|
||||
}
|
||||
router.replace("/");
|
||||
}, [router]);
|
||||
|
||||
useEffect(() => {
|
||||
if (isLoading) return;
|
||||
if (!isAuthenticated) return;
|
||||
if (currentUser === undefined) return;
|
||||
if (currentUser && currentUser.name) {
|
||||
router.replace("/");
|
||||
navigateToHome();
|
||||
}
|
||||
}, [currentUser, isAuthenticated, isLoading, router]);
|
||||
}, [currentUser, isAuthenticated, isLoading, navigateToHome]);
|
||||
|
||||
const [flow, setFlow] = useState<AuthStep>("signIn");
|
||||
const [email, setEmail] = useState("");
|
||||
@@ -70,7 +78,7 @@ export default function AuthPage() {
|
||||
if (cancelled) return;
|
||||
setPendingUsernameToSave(null);
|
||||
setMessage({ type: "success", text: "注册成功!" });
|
||||
router.replace("/");
|
||||
navigateToHome();
|
||||
} catch (err: unknown) {
|
||||
if (cancelled) return;
|
||||
setPendingUsernameToSave(null);
|
||||
@@ -83,7 +91,7 @@ export default function AuthPage() {
|
||||
return () => {
|
||||
cancelled = true;
|
||||
};
|
||||
}, [currentUser, isAuthenticated, pendingUsernameToSave, router, setMyUsername]);
|
||||
}, [currentUser, isAuthenticated, navigateToHome, pendingUsernameToSave, setMyUsername]);
|
||||
|
||||
// 执行登录的核心逻辑
|
||||
const performSignIn = useCallback(async (email: string, password: string, flow: AuthStep) => {
|
||||
@@ -110,8 +118,10 @@ export default function AuthPage() {
|
||||
setPendingUsernameToSave(username.trim());
|
||||
return;
|
||||
}
|
||||
setMessage({ type: "success", text: flow === "signIn" ? "登录成功!" : "注册成功!" });
|
||||
setTimeout(() => router.push("/"), 500);
|
||||
// 说明:登录成功后不要立刻强推 `/`。
|
||||
// Convex Auth cookie 与 currentUser 查询存在短暂同步窗口,过早跳转会把页面推进到根路由空白态。
|
||||
// 这里仅提示“正在同步”,真正跳转交给上面的 useEffect 在登录态稳定后执行。
|
||||
setMessage({ type: "info", text: "登录成功,正在同步登录状态..." });
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -187,7 +197,7 @@ export default function AuthPage() {
|
||||
setIsSavingUsername(true);
|
||||
await setMyUsername({ username: username.trim() });
|
||||
setMessage({ type: "success", text: "用户名已保存!" });
|
||||
router.replace("/");
|
||||
navigateToHome();
|
||||
} catch (error: any) {
|
||||
setMessage({ type: "error", text: getUserFacingErrorMessage(error, "保存失败,请重试") });
|
||||
} finally {
|
||||
|
||||
Reference in New Issue
Block a user