"use client"; import { useEffect, useState } from 'react'; import { useRouter } from 'next/navigation'; import { useLLMPreferences } from '@/hooks/use-llm-configs'; import { Loader2 } from 'lucide-react'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; interface DashboardLayoutProps { children: React.ReactNode; } export default function DashboardLayout({ children }: DashboardLayoutProps) { const router = useRouter(); const { loading, error, isOnboardingComplete } = useLLMPreferences(); const [isCheckingAuth, setIsCheckingAuth] = useState(true); useEffect(() => { // Check if user is authenticated const token = localStorage.getItem('surfsense_bearer_token'); if (!token) { router.push('/login'); return; } setIsCheckingAuth(false); }, [router]); useEffect(() => { // Wait for preferences to load, then check if onboarding is complete if (!loading && !error && !isCheckingAuth) { if (!isOnboardingComplete()) { router.push('/onboard'); } } }, [loading, error, isCheckingAuth, isOnboardingComplete, router]); // Show loading screen while checking authentication or loading preferences if (isCheckingAuth || loading) { return (
{error}