From 871d21792ea0a7a800c252e07824b2871f349810 Mon Sep 17 00:00:00 2001 From: "2569718930@qq.com" <2569718930@qq.com> Date: Wed, 20 May 2026 18:50:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=B4=A6=E6=88=B7=E9=A1=B5?= =?UTF-8?q?=20Pro=20=E7=8A=B6=E6=80=81=E5=81=B6=E5=8F=91=E6=80=A7=E4=B8=A2?= =?UTF-8?q?=E5=A4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/components/account/AccountCenter.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/frontend/components/account/AccountCenter.tsx b/frontend/components/account/AccountCenter.tsx index d8f8e5ea..96644ca7 100644 --- a/frontend/components/account/AccountCenter.tsx +++ b/frontend/components/account/AccountCenter.tsx @@ -1272,7 +1272,7 @@ export function AccountCenter() { const loadSnapshot = useCallback(async () => { setErrorText(""); - try { + const attempt = async (retry: boolean): Promise => { const userPromise = supabaseReady ? getSupabaseBrowserClient().auth.getUser() : Promise.resolve({ data: { user: null as User | null } }); @@ -1289,12 +1289,20 @@ export function AccountCenter() { ]); setUser(userResult.data?.user ?? null); if (!backendResult.ok) { + if (retry && backendResult.status === 401) { + // Supabase session may not be hydrated yet; wait and retry once. + await new Promise((r) => setTimeout(r, 1200)); + return attempt(false); + } const raw = (await backendResult.text()).slice(0, 260); throw new Error(`HTTP ${backendResult.status} ${raw}`.trim()); } const backendJson = (await backendResult.json()) as AuthMeResponse; setBackend(backendJson); setUpdatedAt(new Date().toISOString()); + }; + try { + await attempt(true); } catch (error) { setErrorText(String(error)); }