import { useEffect, useState } from 'react'; import { BrandMark } from '../../../shared/components/BrandMark'; import { useViewport } from '../../../shared/hooks/useViewport'; import { getCurrentUser, getCurrentUserDisplay } from '../../auth/services/sessionService'; import { listContactProfiles } from '../../chat/services/contactProfileService'; import { MassMessagePanel } from '../../management/components/MassMessagePanel'; import { getAccessOptions } from '../../management/services/adminAccessService'; import { HomeSidebar } from '../components/HomeSidebar'; import { sidebarItems } from '../services/homeMocks'; function getUserSpecialties(user) { const normalize = (area) => { if (!area) return null; if (typeof area === 'string') return area; return area.nome || area.name || null; }; const areas = Array.isArray(user?.areas) ? user.areas.map(normalize).filter(Boolean) : []; const primary = normalize(user?.areaPrincipal); return primary && !areas.includes(primary) ? [primary, ...areas] : areas; } export function AgentMassMessagePage() { const { isDesktop, isMobile } = useViewport(); const userDisplay = getCurrentUserDisplay(); const currentUser = getCurrentUser(); const specialties = getUserSpecialties(currentUser); const [areas, setAreas] = useState([]); const [contactCount, setContactCount] = useState(0); useEffect(() => { let isMounted = true; getAccessOptions() .then((options) => { if (isMounted) setAreas(options.areas || []); }) .catch(() => { if (isMounted) setAreas([]); }); return () => { isMounted = false; }; }, []); useEffect(() => { let isMounted = true; listContactProfiles() .then((items) => { if (isMounted) setContactCount(Array.isArray(items) ? items.length : 0); }) .catch(() => { if (isMounted) setContactCount(0); }); return () => { isMounted = false; }; }, []); const sidebarWithContactCount = sidebarItems.map((item) => item.id === 'contacts' ? { ...item, count: contactCount } : item, ); return (

Disparo em massa

Envie templates aprovados para contatos da agenda ou numeros informados manualmente.

{userDisplay.name} Atendimento omnichannel
); }