import { Link, useSearchParams } from 'react-router-dom'; import { useEffect, useState } from 'react'; import { BrandMark } from '../../../shared/components/BrandMark'; import { useViewport } from '../../../shared/hooks/useViewport'; import { ChatConversationList } from '../components/ChatConversationList'; import { ChatTransferPanel } from '../components/ChatTransferPanel'; import { ContactProfilePanel } from '../components/ContactProfilePanel'; import { ChatWindow } from '../components/ChatWindow'; import { useChat } from '../hooks/useChat'; import { quickReplies } from '../services/chatMocks'; export function ChatPage() { const [searchParams] = useSearchParams(); const { isWideDesktop, isDesktop, isTablet, isMobile } = useViewport(); const { contacts, activeContact, activeContactId, setActiveContactId, messages, draft, setDraft, attachedFile, attachFile, removeAttachedFile, sendMessage, hydrateMessageMedia, assumeChat, releaseChat, canAssumeChat, canReply, assignmentLabel, transferNoteLabel, updateContactProfile, isReplying, selectedArea, setSelectedArea, isTransferOpen, setIsTransferOpen, transferArea, setTransferArea, transferAreas, attendants, isSameUserArea, transferAttendant, setTransferAttendant, transferNote, setTransferNote, submitTransfer, } = useChat(); const requestedChatId = searchParams.get('chatId'); const [isContactPanelOpen, setIsContactPanelOpen] = useState(false); useEffect(() => { if (!requestedChatId) return; if (!contacts.some((contact) => contact.id === requestedChatId)) return; setActiveContactId(requestedChatId); }, [requestedChatId, contacts, setActiveContactId]); const gridTemplateColumns = isMobile ? '1fr' : isWideDesktop ? 'minmax(260px, 320px) minmax(0, 1.6fr) minmax(280px, 320px)' : isDesktop || isTablet ? 'minmax(260px, 320px) minmax(0, 1fr)' : '1fr'; return (
Atendimento em tempo real
Voltar para home
{ setIsTransferOpen(false); setIsContactPanelOpen(true); }} isMobile={isMobile} />
{ setIsContactPanelOpen(false); setIsTransferOpen((current) => !current); }} onAssumeChat={assumeChat} onReleaseChat={releaseChat} canAssumeChat={canAssumeChat} canReply={canReply} assignmentLabel={assignmentLabel} transferNote={transferNoteLabel} isReplying={isReplying} isMobile={isMobile} />
{quickReplies.map((reply) => ( ))}
{isWideDesktop ? ( <> setIsTransferOpen(false)} /> setIsContactPanelOpen(false)} onSaved={updateContactProfile} /> ) : null}
{!isWideDesktop ? ( <> setIsTransferOpen(false)} /> setIsContactPanelOpen(false)} onSaved={updateContactProfile} /> ) : null}
); }