From 5ab0ad45c2324eaed323d17d3e1d3a7991fdc78e Mon Sep 17 00:00:00 2001 From: hzm <934585316@qq.com> Date: Sat, 28 Feb 2026 19:55:38 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=88=9D=E5=A7=8B=E5=8C=96=E5=88=B7?= =?UTF-8?q?=E6=96=B0=E6=8E=A5=E5=8F=A3=E9=9C=80=E7=AD=89=E5=BE=85=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E4=BA=91=E7=AB=AF=E6=95=B0=E6=8D=AE=E4=B9=8B=E5=90=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/page.jsx | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/app/page.jsx b/app/page.jsx index f379ef2..659252e 100644 --- a/app/page.jsx +++ b/app/page.jsx @@ -1840,15 +1840,27 @@ export default function HomePage() { }; useEffect(() => { - try { - const saved = JSON.parse(localStorage.getItem('funds') || '[]'); - if (Array.isArray(saved) && saved.length) { - const deduped = dedupeByCode(saved); - setFunds(deduped); - storageHelper.setItem('funds', JSON.stringify(deduped)); - const codes = Array.from(new Set(deduped.map((f) => f.code))); - if (codes.length) refreshAll(codes); - } + let cancelled = false; + const init = async () => { + try { + // 已登录用户:不在此处调用 refreshAll,等 fetchCloudConfig 完成后由 applyCloudConfig 统一刷新 + let shouldRefreshFromLocal = true; + if (isSupabaseConfigured) { + const { data, error } = await supabase.auth.getSession(); + if (!cancelled && !error && data?.session?.user) { + shouldRefreshFromLocal = false; + } + } + if (cancelled) return; + + const saved = JSON.parse(localStorage.getItem('funds') || '[]'); + if (Array.isArray(saved) && saved.length) { + const deduped = dedupeByCode(saved); + setFunds(deduped); + storageHelper.setItem('funds', JSON.stringify(deduped)); + const codes = Array.from(new Set(deduped.map((f) => f.code))); + if (codes.length && shouldRefreshFromLocal) refreshAll(codes); + } const savedMs = parseInt(localStorage.getItem('refreshMs') || '30000', 10); if (Number.isFinite(savedMs) && savedMs >= 5000) { setRefreshMs(savedMs); @@ -1902,8 +1914,11 @@ export default function HomePage() { if (savedTheme === 'light' || savedTheme === 'dark') { setTheme(savedTheme); } - } catch { } - }, []); + } catch { } + }; + init(); + return () => { cancelled = true; }; + }, [isSupabaseConfigured]); // 主题同步到 document 并持久化 useEffect(() => {