"use client"; import { useEffect, useState } from "react"; import { ensureGuestSession } from "@/lib/auth/session"; import { tracker } from "@/lib/tracker"; /** * 仅在挂载后异步拉游客会话,不参与 SSR / 首屏阻塞。 * ensureGuestSession 本地有缓存时会同步返回并后台 refresh。 */ export function GuestAuthBootstrap() { const [error, setError] = useState(null); useEffect(() => { let cancelled = false; // 不 await:失败/超时也不拖住其它渲染 void ensureGuestSession() .then((user) => { if (cancelled || !user) return; // 埋点 uid:SDK 要求非空时长度 ≥ 4 tracker.setUid(String(user.userId || "")); if (process.env.NODE_ENV === "development") { console.info("[guest-auth]", { userId: user.userId, nickName: user.nickName, isRegister: user.isRegister, loginType: user.loginType, }); } }) .catch((err: unknown) => { if (cancelled) return; const message = err instanceof Error ? err.message : "游客登录失败"; setError(message); console.error("[guest-auth]", err); }); return () => { cancelled = true; }; }, []); if (process.env.NODE_ENV !== "development" || !error) return null; return (
游客登录失败:{error}
); }