'use client'; import { useEffect } from 'react'; import { usePathname, useRouter } from 'next/navigation'; import { useUser } from '@/contexts/user-context'; /** Redirects unauthenticated users to login while allowing the shell to render first. */ export function useAuthRedirect() { const router = useRouter(); const pathname = usePathname(); const { user, loading } = useUser(); useEffect(() => { if (loading || user) { return; } const queryString = window.location.search; const callbackUrl = queryString ? `${pathname}${queryString}` : pathname; const loginUrl = new URL('/login', window.location.origin); loginUrl.searchParams.set('callbackUrl', callbackUrl); sessionStorage.setItem('redirect_after_login', callbackUrl); router.replace(loginUrl.toString()); }, [loading, pathname, router, user]); }