Skip to content

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

Open

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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