Skip to content

Chat: mensagens recebidas via webhook não aparecem na conversa ativa em tempo real #239

Description

@joel299

Parent issue

Reported during QA session

What's wrong

Quando uma mensagem chega via webhook do Pastorini para a conversa atualmente aberta, ela é adicionada ao array global messages da store sem verificar se pertence à conversa ativa. Isso causa dois problemas combinados:

  • Mensagens destinadas a outra conversa aparecem na janela de chat atual (contaminação cruzada)
  • Mensagens recebidas para uma nova conversa (contato ainda não listado) são adicionadas ao array que será limpo ao selecionar qualquer outra conversa — a mensagem some

O campo direction é corretamente definido no backend (inbound/outbound), então quando a mensagem errada aparece em outra conversa, o alinhamento também fica inconsistente com o contexto.

What I expected

Mensagens recebidas via WebSocket devem aparecer apenas na conversa à qual pertencem. Se a conversa não estiver ativa, apenas os metadados da conversa (unread_count, last_message_at) devem ser atualizados.

Steps to reproduce

  1. Abrir o ISing e selecionar a conversa com o contato A
  2. Enviar uma mensagem do WhatsApp de um contato B (diferente) para o número conectado
  3. Observar que a mensagem de B aparece na janela de chat de A

Additional context

A função addMessage na store checa deduplicação por message.id, mas não filtra pelo activeConversation antes de inserir no array messages. A verificação de qual conversa pertence a mensagem (from_jid/to_jid vs activeConversation.contact.jid) precisa ser feita antes do set({ messages: [...messages, message] }).

Blocked by: None — can start immediately

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions