'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 { fetchMessages } from '@/app/actions/messagerieAction'; import ProtectedRoute from '@/components/ProtectedRoute'; import { disconnect } from '@/app/actions/authAction'; import Popup from '@/components/Popup'; import logger from '@/utils/logger'; import { useSession } from 'next-auth/react'; import { FE_USERS_LOGIN_URL } from '@/utils/Url'; import { getRightStr, RIGHTS } from '@/utils/rights'; import { getGravatarUrl } from '@/utils/gravatar'; import Image from 'next/image'; export default function Layout({ children, }) { const router = useRouter(); // Définition de router const [messages, setMessages] = useState([]); const { data: session, status } = useSession(); const [userId, setUserId] = useState(null); const [user, setUser] = useState(null); const [isLoading, setIsLoading] = useState(true); const [isPopupVisible, setIsPopupVisible] = useState(false); const handleDisconnect = () => { setIsPopupVisible(true); }; const confirmDisconnect = () => { setIsPopupVisible(false); disconnect(); }; // useEffect(() => { // if (status === 'loading') return; // if (!session) { // router.push(`${FE_USERS_LOGIN_URL}`); // } // const userIdFromSession = session.user.id; // setUserId(userIdFromSession); // setIsLoading(true); // fetchMessages(userId) // .then(data => { // if (data) { // setMessages(data); // } // logger.debug('Success :', data); // }) // .catch(error => { // logger.error('Error fetching data:', error); // }) // .finally(() => { // setIsLoading(false); // }); // }, [userId]); // if (isLoading) { // return
Loading...
; // } const dropdownItems = [ { type: 'info', content: (
{user?.email || 'Utilisateur'}
{getRightStr(user?.roles[0]?.role_type) || ''}
) }, { type: 'separator', content:
}, { label: 'Settings', icon: Settings , onClick: () => { router.push(FE_PARENTS_SETTINGS_URL); } }, { type: 'item', label: 'Déconnexion', onClick: handleDisconnect, icon: LogOut, }, ]; return (
{/* Entête */}
{/* Utilisation du composant Logo */}
Accueil
{messages.length > 0 && ( )}
} items={dropdownItems} buttonClassName="" menuClassName="absolute right-0 mt-2 w-64 bg-white border border-gray-200 rounded shadow-lg" />
{/* Content */}
{/* Ajout de flex-1 pour utiliser toute la hauteur disponible */} {children}
setIsPopupVisible(false)} />
); }