From 10e061d2c1fdf01f7ece9f30458a7f073e660945 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 13 Aug 2026 01:07:29 -0400 Subject: [PATCH] fix many request issue --- apps/admin/src/app/dashboard/layout.tsx | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/apps/admin/src/app/dashboard/layout.tsx b/apps/admin/src/app/dashboard/layout.tsx index 0f38938..3c4bbb3 100644 --- a/apps/admin/src/app/dashboard/layout.tsx +++ b/apps/admin/src/app/dashboard/layout.tsx @@ -41,12 +41,21 @@ export default function AdminDashboardLayout({ children }: { children: React.Rea const [ready, setReady] = useState(false) const [admin, setAdmin] = useState(null) const [unreadNotifications, setUnreadNotifications] = useState(0) + const redirectingToLogin = useRef(false) + + function redirectToLogin() { + if (redirectingToLogin.current) return + redirectingToLogin.current = true + window.location.replace(buildUnifiedLoginUrl(pathname)) + } useEffect(() => { let cancelled = false + const controller = new AbortController() fetch(`${ADMIN_API_BASE}/admin/auth/me`, { credentials: 'include', + signal: controller.signal, }) .then(async (response) => { if (cancelled) return @@ -54,7 +63,7 @@ export default function AdminDashboardLayout({ children }: { children: React.Rea const json = await response.json().catch(() => null) const resolvedAdmin = (json?.data ?? json) as AdminSessionUser | null if (!resolvedAdmin?.id || !resolvedAdmin?.email || !resolvedAdmin?.role) { - window.location.replace(buildUnifiedLoginUrl(pathname)) + redirectToLogin() return } setAdmin(resolvedAdmin) @@ -68,15 +77,17 @@ export default function AdminDashboardLayout({ children }: { children: React.Rea .catch(() => {}) } } else { - window.location.replace(buildUnifiedLoginUrl(pathname)) + redirectToLogin() } }) - .catch(() => { - if (!cancelled) window.location.replace(buildUnifiedLoginUrl(pathname)) + .catch((err) => { + if (err?.name === 'AbortError') return + if (!cancelled) redirectToLogin() }) return () => { cancelled = true + controller.abort() } }, [pathname])