import { Outlet, Navigate } from 'react-router-dom' import { Toaster } from 'react-hot-toast' import { Sidebar } from './Sidebar' import { ComposeModal } from '@/components/ComposeModal/ComposeModal' import { useAuth } from '@/hooks/useAuth' import { useWebSocket } from '@/hooks/useWebSocket' import { useEffect } from 'react' import { useAuthStore } from '@/store/auth.store' /** * Layout principale dell'applicazione autenticata. * Include: sidebar + area contenuto + WebSocket + toast notifications. */ export function AppLayout() { const { isAuthenticated, isLoading } = useAuth() const loadUser = useAuthStore((s) => s.loadUser) // Inizializza WebSocket (si connette automaticamente quando autenticato) useWebSocket() // Carica l'utente al mount se c'รจ un token useEffect(() => { loadUser() }, [loadUser]) if (isLoading) { return (

Caricamento...

) } if (!isAuthenticated) { return } return (
{/* Sidebar navigazione */} {/* Area contenuto principale */}
{/* Toast notifications globali */} {/* Finestra di composizione PEC flottante (stile Gmail) */}
) }