From ee154f990db6cc07c0cfc91b40d137206c05e332 Mon Sep 17 00:00:00 2001 From: kurihada Date: Sun, 1 Mar 2026 23:14:41 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95=E9=A1=B5=E9=9D=A2=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E6=A3=80=E6=9F=A5=E7=8A=B6=E6=80=81=EF=BC=8C=E6=9C=AA?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=97=B6=E6=89=8D=E6=98=BE=E7=A4=BA=E4=BA=8C?= =?UTF-8?q?=E7=BB=B4=E7=A0=81=E5=8C=BA=E5=9F=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 挂载时先 checkLoginCookie(轻量,不开浏览器) - 有 cookie 则调 refreshStatus 验证实际状态,完成后标记 initialCheckDone - 无 cookie 直接标记 initialCheckDone(确定未登录,无需开浏览器) - 二维码登录卡片仅在 initialCheckDone=true 且未登录时渲染,检查期间不显示 --- web/src/pages/LoginPage.tsx | 101 ++++++++++++++++++++---------------- 1 file changed, 56 insertions(+), 45 deletions(-) diff --git a/web/src/pages/LoginPage.tsx b/web/src/pages/LoginPage.tsx index 7965fbc..8bab840 100644 --- a/web/src/pages/LoginPage.tsx +++ b/web/src/pages/LoginPage.tsx @@ -14,14 +14,23 @@ export function LoginPage() { const { token } = useAuth(); const { toast } = useToast(); + // Whether the initial login check has completed (used to decide when to show QR section) + const [initialCheckDone, setInitialCheckDone] = useState(false); + // Auto-check cookie on mount (lightweight, no browser opened) useEffect(() => { if (!token) return; void checkLoginCookie().then((res) => { if (res.success && res.data?.hasCookies) { - void refreshStatus(); // Only open browser if cookies exist + // Cookies exist — open browser to verify actual login state + void refreshStatus().finally(() => setInitialCheckDone(true)); + } else { + // No cookies — definitely not logged in, no need to open a browser + setInitialCheckDone(true); } - }).catch(() => {}); + }).catch(() => { + setInitialCheckDone(true); + }); }, [token, refreshStatus]); const navigate = useNavigate(); @@ -167,53 +176,55 @@ export function LoginPage() { - {/* QR Code Login */} - -

- 二维码登录 -

+ {/* QR Code Login — only shown after check completes and user is not logged in */} + {token && initialCheckDone && !status?.loggedIn && ( + +

+ 二维码登录 +

- {!qrData && !qrLoading && ( -
-

点击按钮生成登录二维码

- -
- )} - - {qrLoading && ( -
- -

生成二维码中...

-
- )} - - {qrData && ( -
-
- 登录二维码 + {!qrData && !qrLoading && ( +
+

点击按钮生成登录二维码

+
-

使用小红书 App 扫码登录

- {polling && ( -
- - - 等待扫码... {formatCountdown(countdown)} - + )} + + {qrLoading && ( +
+ +

生成二维码中...

+
+ )} + + {qrData && ( +
+
+ 登录二维码 +
+

使用小红书 App 扫码登录

+ {polling && ( +
+ + + 等待扫码... {formatCountdown(countdown)} + +
+ )} +
+ +
- )} -
- -
-
- )} - + )} + + )}
); }