import { useState } from 'react'; import { BrandMark } from '../../../shared/components/BrandMark'; import { HomeSidebar } from '../components/HomeSidebar'; import { HomeTopbar } from '../components/HomeTopbar'; import { MessagesWorkspace } from '../components/MessagesWorkspace'; import { CallsWorkspace } from '../components/CallsWorkspace'; import { AttendantOpsPanel } from '../components/AttendantOpsPanel'; import { recentCalls, sidebarItems } from '../services/homeMocks'; import { useViewport } from '../../../shared/hooks/useViewport'; import { useChat } from '../../chat/hooks/useChat'; function toHomeConversation(contact, messages = []) { return { id: contact.id, name: contact.name, channel: contact.channel || 'WhatsApp', status: contact.status || 'online', lastMessage: contact.preview || messages[messages.length - 1]?.text || '', unread: contact.unread || 0, time: contact.time || 'Agora', lastSeen: contact.lastSeen, messages: messages.map((message) => ({ id: message.id, from: message.sender === 'agent' ? 'agent' : 'customer', text: message.text || (message.hasMedia ? '[Mídia]' : ''), timestamp: message.timestamp, })), }; } export function HomePage() { const { isWideDesktop, isDesktop, isTablet, isMobile } = useViewport(); const { contacts, activeContactId, setActiveContactId, messages, sendMessage, isLoadingChats, } = useChat(); const [activeTab, setActiveTab] = useState('messages'); const [searchValue, setSearchValue] = useState(''); const conversations = contacts.map((contact) => toHomeConversation(contact, contact.id === activeContactId ? messages : []), ); const search = searchValue.trim().toLowerCase(); const filteredConversations = !search ? conversations : conversations.filter((conversation) => { const haystack = `${conversation.name} ${conversation.channel} ${conversation.lastMessage}`; return haystack.toLowerCase().includes(search); }); const safeConversationId = filteredConversations.find((conversation) => conversation.id === activeContactId)?.id || filteredConversations[0]?.id || conversations[0]?.id; return (
{isLoadingChats ? (
Atualizando conversas do WhatsApp...
) : null} {activeTab === 'messages' ? ( { setActiveContactId(conversationId); await sendMessage(reply, conversationId); }} isWideDesktop={isWideDesktop} isDesktop={isDesktop} isTablet={isTablet} isMobile={isMobile} /> ) : ( )}
); }