diff --git a/src/app/()/page.tsx b/src/app/()/page.tsx index 0b8c636..afc01bf 100644 --- a/src/app/()/page.tsx +++ b/src/app/()/page.tsx @@ -18,12 +18,12 @@ import { TypographyLead, TypographyMuted, } from "@/components/ui/typography"; -import { NavBarWrapper } from "@/components/layout/nav-bar-wrapper"; +import { NavBar } from "@/components/layout/nav-bar"; export default function HomePage() { return (
- +
diff --git a/src/app/(auth)/layout.tsx b/src/app/(auth)/layout.tsx index eb31bdd..7b7afd1 100644 --- a/src/app/(auth)/layout.tsx +++ b/src/app/(auth)/layout.tsx @@ -1,6 +1,7 @@ import { redirect } from "next/navigation"; import { getCurrentUser } from "@/lib/session"; +import { AuthStateSync } from "@/components/auth/auth-state-sync"; export default async function AuthLayout({ children, @@ -15,10 +16,13 @@ export default async function AuthLayout({ } return ( -
-
- {children} + <> + +
+
+ {children} +
-
+ ); } diff --git a/src/components/auth/auth-state-sync.tsx b/src/components/auth/auth-state-sync.tsx new file mode 100644 index 0000000..04f7a54 --- /dev/null +++ b/src/components/auth/auth-state-sync.tsx @@ -0,0 +1,20 @@ +"use client"; + +import { useEffect } from "react"; +import { usePathname, useRouter } from "next/navigation"; +import { useSession } from "next-auth/react"; + +export function AuthStateSync() { + const { data: session, status, update } = useSession(); + const router = useRouter(); + const pathname = usePathname(); + + useEffect(() => { + // 当状态从"loading"变为"authenticated"时,强制刷新路由 + if (status === "authenticated" && session?.user) { + router.refresh(); + } + }, [status, session]); + + return null; +} diff --git a/src/components/layout/nav-bar-wrapper.tsx b/src/components/layout/nav-bar-wrapper.tsx deleted file mode 100644 index b338c55..0000000 --- a/src/components/layout/nav-bar-wrapper.tsx +++ /dev/null @@ -1,19 +0,0 @@ -"use client"; - -import { useEffect } from "react"; -import { usePathname, useRouter } from "next/navigation"; - -import { NavBar } from "./nav-bar"; - -export function NavBarWrapper() { - const router = useRouter(); - const pathname = usePathname(); - - useEffect(() => { - if (pathname?.startsWith("/dashboard") || pathname?.startsWith("/admin")) { - router.refresh(); - } - }, [pathname, router]); - - return ; -}