fix: corrige chat abrindo automaticamente e zerando contador
O bug era causado pelo useEffect de auto-open que executava na montagem inicial do componente, sobrescrevendo o estado do localStorage (isMinimized) e fazendo o chat abrir expandido. Isso causava o useEffect de markChatRead executar e zerar o contador de mensagens nao lidas. Correcao: - prevSessionCountRef agora inicia como -1 (nao inicializado) - Primeira execucao apenas inicializa o ref, sem abrir o chat - Auto-open so acontece para sessoes NOVAS criadas APOS montagem - Estado do localStorage (minimizado/expandido) e preservado 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
f4880f32d2
commit
9a13e9c6fb
1 changed files with 13 additions and 4 deletions
|
|
@ -292,7 +292,8 @@ export function ChatWidget() {
|
|||
const inputRef = useRef<HTMLTextAreaElement | null>(null)
|
||||
const fileInputRef = useRef<HTMLInputElement | null>(null)
|
||||
const dropAreaRef = useRef<HTMLDivElement | null>(null)
|
||||
const prevSessionCountRef = useRef<number>(0)
|
||||
const prevSessionCountRef = useRef<number>(-1) // -1 indica "ainda nao inicializado"
|
||||
const hasRestoredStateRef = useRef<boolean>(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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue