'use client' // src/components/Layout.js import React, { useState, useEffect } from 'react'; import DropdownMenu from '@/components/DropdownMenu'; import { useRouter } from 'next/navigation'; // Ajout de l'importation import { User, MessageSquare, LogOut, Settings, Home } from 'lucide-react'; // Ajout de l'importation de l'icône Home import Logo from '@/components/Logo'; // Ajout de l'importation du composant Logo import { FE_PARENTS_HOME_URL,FE_PARENTS_MESSAGERIE_URL,FE_PARENTS_SETTINGS_URL } from '@/utils/Url'; // Ajout de l'importation de l'URL de la page d'accueil parent import useLocalStorage from '@/hooks/useLocalStorage'; import { fetchMessages } from '@/app/actions/messagerieAction'; import ProtectedRoute from '@/components/ProtectedRoute'; import { SessionProvider } from 'next-auth/react'; import { disconnect } from '@/app/actions/authAction'; import Popup from '@/components/Popup'; export default function Layout({ children, }) { const router = useRouter(); // Définition de router const [messages, setMessages] = useState([]); const [userId, setUserId] = useLocalStorage("userId", '') ; const [isLoading, setIsLoading] = useState(true); const [isPopupVisible, setIsPopupVisible] = useState(false); const handleDisconnect = () => { setIsPopupVisible(true); }; const confirmDisconnect = () => { setIsPopupVisible(false); disconnect(); }; useEffect(() => { setIsLoading(true); setUserId(userId) fetchMessages(userId) .then(data => { if (data) { setMessages(data); } console.log('Success :', data); }) .catch(error => { console.error('Error fetching data:', error); }) .finally(() => { setIsLoading(false); }); }, [userId]); if (isLoading) { return
Loading...
; } return (
{/* Entête */}
{/* Utilisation du composant Logo */}
Accueil
{messages.length > 0 && ( )}
} items={[ { label: 'Se déconnecter', icon: LogOut, onClick: handleDisconnect }, { label: 'Settings', icon: Settings , onClick: () => { router.push(FE_PARENTS_SETTINGS_URL); } } ]} buttonClassName="p-2 rounded-full hover:bg-gray-200" menuClassName="absolute right-0 mt-2 w-48 bg-white border border-gray-200 rounded-md shadow-lg" />
{/* Content */}
{/* Ajout de flex-1 pour utiliser toute la hauteur disponible */} {children}
setIsPopupVisible(false)} />
); }