import { useCallback, useEffect, useState, } from 'react'; import { Activity, BarChart3, Building2, FileCheck2, FileText, FilePenLine, Gauge, Hash, ImageIcon, ListChecks, Layers3, MessageSquare, Phone, RefreshCw, TrendingUp, RadioTower, ReceiptText, ClipboardList, Send, Settings, Shield, ShieldOff, ShieldCheck, Users, UserX, } from 'lucide-react'; import { Navigate } from 'react-router-dom'; import { adminApi } from '@/api/adminApi'; import { readSession } from '@/api/session'; import { AppShell } from '@/layouts/AppShell'; export function AdminLayout() { const session = readSession(); const [pendingAudits, setPendingAudits] = useState({ enterpriseCertifications: 0, smsAudits: 0, templates: 0, signatures: 0, drainageInfos: 0 }); const loadPendingAuditCount = useCallback(() => { adminApi.getDashboard() .then((dashboard) => { setPendingAudits(dashboard.pendingAudits ?? { enterpriseCertifications: 0, smsAudits: 0, templates: 0, signatures: 0, drainageInfos: 0 }); }) .catch(() => { setPendingAudits({ enterpriseCertifications: 0, smsAudits: 0, templates: 0, signatures: 0, drainageInfos: 0 }); }); }, []); useEffect(() => { if (session?.portal !== 'admin') { return; } loadPendingAuditCount(); const timer = window.setInterval(loadPendingAuditCount, 30000); const onFocus = () => loadPendingAuditCount(); window.addEventListener('focus', onFocus); return () => { window.clearInterval(timer); window.removeEventListener('focus', onFocus); }; }, [loadPendingAuditCount, session?.portal]); if (session?.portal !== 'admin') { return ; } return ( ); }