import React, { useState } from "react"; import { Link, useNavigate } from "react-router-dom"; import menuItems from "../data/sidebar-items-medico.json"; import TrocardePerfis from "./TrocardePerfis"; function Sidebar({ menuItems }) { const [isActive, setIsActive] = useState(true); const [openSubmenu, setOpenSubmenu] = useState(null); const [showLogoutModal, setShowLogoutModal] = useState(false); const navigate = useNavigate(); const toggleSidebar = () => { setIsActive(!isActive); }; const handleSubmenuClick = (submenuName) => { setOpenSubmenu(openSubmenu === submenuName ? null : submenuName); }; const handleLogoutClick = () => { setShowLogoutModal(true); }; const handleLogoutConfirm = async () => { try { const token = localStorage.getItem('token') || localStorage.getItem('authToken') || localStorage.getItem('userToken') || localStorage.getItem('access_token') || sessionStorage.getItem('token') || sessionStorage.getItem('authToken'); if (token) { const response = await fetch('https://mock.apidog.com/m1/1053378-0-default/auth/v1/logout', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` } }); if (response.status === 204) { console.log('Logout realizado com sucesso'); } else if (response.status === 401) { console.log('Token inválido ou expirado'); } else { try { const errorData = await response.json(); console.error('Erro no logout:', errorData); } catch { console.error('Erro no logout - status:', response.status); } } } clearAuthData(); navigate('/login'); } catch (error) { console.error('Erro durante logout:', error); clearAuthData(); navigate('/login'); } finally { setShowLogoutModal(false); } }; const clearAuthData = () => { localStorage.removeItem('token'); localStorage.removeItem('authToken'); localStorage.removeItem('userToken'); localStorage.removeItem('access_token'); localStorage.removeItem('user'); localStorage.removeItem('auth'); localStorage.removeItem('userData'); sessionStorage.removeItem('token'); sessionStorage.removeItem('authToken'); sessionStorage.removeItem('userToken'); sessionStorage.removeItem('access_token'); sessionStorage.removeItem('user'); sessionStorage.removeItem('auth'); sessionStorage.removeItem('userData'); if (window.caches) { caches.keys().then(names => { names.forEach(name => { if (name.includes('auth') || name.includes('api')) { caches.delete(name); } }); }); } }; const handleLogoutCancel = () => { setShowLogoutModal(false); }; const renderLink = (item) => { if (item.url && item.url.startsWith("/")) { return ( {item.icon && } {item.name} ); } return ( {item.icon && } {item.name} ); }; return ( <> {showLogoutModal && (

Confirmar Logout

Tem certeza que deseja encerrar a sessão?

)} ); } export default Sidebar;