'use client'; import { apiClient } from '@/lib/api-client'; import { useAuthStore } from '@/lib/auth-store'; import { useRouter } from 'next/navigation'; import { useEffect, useState } from 'react'; import { DashboardNav } from './dashboard-nav'; interface DashboardLayoutProps { children: React.ReactNode; } export function DashboardLayout({ children }: DashboardLayoutProps) { const { isAuthenticated, token } = useAuthStore(); const router = useRouter(); const [isInitialized, setIsInitialized] = useState(false); useEffect(() => { // Wait for hydration to complete setIsInitialized(true); }, []); useEffect(() => { if (!isInitialized) return; if (!isAuthenticated || !token) { router.replace('/'); return; } // Set token in API client apiClient.setToken(token); }, [isAuthenticated, token, router, isInitialized]); // Show loading during hydration or if not authenticated if (!isInitialized || !isAuthenticated) { return (
Loading...