diff --git a/src/components/chat/chat-widget.tsx b/src/components/chat/chat-widget.tsx index ac80b5f..f7922b4 100644 --- a/src/components/chat/chat-widget.tsx +++ b/src/components/chat/chat-widget.tsx @@ -292,7 +292,8 @@ export function ChatWidget() { const inputRef = useRef(null) const fileInputRef = useRef(null) const dropAreaRef = useRef(null) - const prevSessionCountRef = useRef(0) + const prevSessionCountRef = useRef(-1) // -1 indica "ainda nao inicializado" + const hasRestoredStateRef = useRef(false) // Flag para evitar sobrescrever estado do localStorage // Buscar sessões de chat ativas do agente const activeSessions = useQuery( @@ -371,14 +372,22 @@ export function ChatWidget() { } }, [activeTicketId, activeSessions]) - // Auto-abrir widget quando uma nova sessão é iniciada + // Auto-abrir widget quando uma nova sessão é iniciada (apenas para sessoes NOVAS, nao na montagem inicial) useEffect(() => { if (!activeSessions) return const currentCount = activeSessions.length const prevCount = prevSessionCountRef.current - // Se aumentou o número de sessões, é uma nova sessão - abrir o widget expandido - if (currentCount > prevCount && prevCount >= 0) { + // Primeira execucao: apenas inicializar o ref, nao abrir automaticamente + // Isso preserva o estado do localStorage (se usuario tinha minimizado, mantem minimizado) + if (prevCount === -1) { + prevSessionCountRef.current = currentCount + hasRestoredStateRef.current = true + return + } + + // Se aumentou o número de sessões APOS a montagem inicial, é uma nova sessão - abrir o widget expandido + if (currentCount > prevCount && hasRestoredStateRef.current) { setIsOpen(true) setIsMinimized(false) // Selecionar a sessão mais recente (última da lista ou primeira se única)