fix: corrige multiplos problemas de chat e infra
- stack.yml: reduz replicas web para 1 (SQLite nao suporta escrita concorrente) - chat.rs: janela de chat ja abre minimizada para evitar marcar mensagens como lidas prematuramente - rustdesk.rs: preserva ID existente do RustDesk ao reprovisionar (evita criar novo ID a cada reinstalacao do Raven) - ChatWidget.tsx: remove isMinimized das dependencias do useEffect para evitar memory leak de resubscriptions 🤖 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
695a44781a
commit
fb97d9bec8
4 changed files with 80 additions and 34 deletions
|
|
@ -80,7 +80,13 @@ export function ChatWidget({ ticketId, ticketRef }: ChatWidgetProps) {
|
|||
hadSessionRef.current = hasSession
|
||||
}, [hasSession, ticketId])
|
||||
|
||||
// Inicializacao via Convex (WS)
|
||||
// Ref para acessar isMinimized dentro do callback sem causar resubscription
|
||||
const isMinimizedRef = useRef(isMinimized)
|
||||
useEffect(() => {
|
||||
isMinimizedRef.current = isMinimized
|
||||
}, [isMinimized])
|
||||
|
||||
// Inicializacao via Convex (WS) - NAO depende de isMinimized para evitar resubscriptions
|
||||
useEffect(() => {
|
||||
setIsLoading(true)
|
||||
setMessages([])
|
||||
|
|
@ -107,13 +113,8 @@ export function ChatWidget({ ticketId, ticketRef }: ChatWidgetProps) {
|
|||
const first = payload.messages[0]
|
||||
setTicketInfo((prevInfo) => prevInfo ?? { ref: 0, subject: "", agentName: first.authorName ?? "Suporte" })
|
||||
}
|
||||
// Marca como lidas se a janela estiver expandida e houver nao lidas
|
||||
if (backendUnreadCount > 0 && !isMinimized) {
|
||||
const unreadIds = payload.messages.filter(m => !m.isFromMachine).map(m => m.id as string)
|
||||
if (unreadIds.length > 0) {
|
||||
markMachineMessagesRead(ticketId, unreadIds).catch(err => console.error("mark read falhou", err))
|
||||
}
|
||||
}
|
||||
// NAO marca como lidas aqui - deixa o useEffect de expansao fazer isso
|
||||
// Isso evita marcar como lidas antes do usuario expandir o chat
|
||||
},
|
||||
(err) => {
|
||||
setIsLoading(false)
|
||||
|
|
@ -127,7 +128,7 @@ export function ChatWidget({ ticketId, ticketRef }: ChatWidgetProps) {
|
|||
messagesSubRef.current?.()
|
||||
messagesSubRef.current = null
|
||||
}
|
||||
}, [ticketId, isMinimized])
|
||||
}, [ticketId]) // Removido isMinimized - evita memory leak de resubscriptions
|
||||
|
||||
// Sincroniza estado de minimizado com o tamanho da janela (Tauri pode alterar por fora)
|
||||
useEffect(() => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue