Recebendo múltiplas notificações sobre a mesma resposta

A primeira vez que notei uma segunda notificação para a mesma resposta sem que um link, citação ou menção fossem adicionados na edição foi após a edição em Topics from some categories do not appear on /latest - #36 by JammyDodger. Este caso é ligeiramente diferente das minhas etapas de reprodução abaixo, mas acho que o problema subjacente é o mesmo.

A segunda postagem onde isso aconteceu foi em Messages section for sidebar - #13 by nathank. Foi semelhante: a edição não adicionou nada que resultasse em uma notificação — as citações já estavam lá antes — e ainda assim fui notificado uma segunda vez.

Aqui estão as etapas para reproduzir que encontrei e que funcionaram [1]

Você precisa de 3 usuários: OP, notifiedUser, spammer

  1. OP cria um tópico
  2. notifiedUser responde
  3. OP responde à postagem de notified user
    notifiedUser é notificado sobre a resposta (esperado)
  4. spammer responde à postagem de notifiedUser. A resposta contém um link para outra postagem de notifiedUser e uma citação da postagem à qual você está respondendo. (opcional: você também pode @mencionar notifiedUser)
    notifiedUser é notificado sobre a resposta (esperado)
    [Caso você tenha adicionado uma @menção, a notificação é sobre a @menção (esperado)]
  5. notifiedUser lê as novas respostas para marcar as notificações como lidas e navega de volta para outro lugar para que não percamos uma notificação.
  6. spammer edita a resposta e corrige um erro de digitação (ou adiciona edit1)
    notifiedUser é notificado sobre ser citado (inesperado, eles já foram notificados sobre esta resposta antes e a citação já estava lá, não há necessidade de avisá-los)
  7. spammer edita a resposta novamente para corrigir outro erro de digitação (ou adiciona edit2)
    notifiedUser é notificado sobre ser linkado (inesperado, eles já foram notificados sobre esta resposta antes e o link já estava lá, não há necessidade de avisá-los)

O vídeo mostra apenas as etapas finais 5-7. Spammer à esquerda, notifiedUser à direita


  1. pelo menos na maioria das vezes, às vezes até adicionar uma @menção na edição não aciona uma nova notificação ↩︎

3 curtidas

Em post_alerter.rb

Mude as linhas 589-599 de:
 # linked, quoted, mentioned, chat_quoted podem ser suprimidos se você já tiver uma notificação de resposta
 if [
      Notification.types[:quoted],
      Notification.types[:linked],
      Notification.types[:mentioned],
      Notification.types[:chat_quoted],
    ].include?(type)
   if existing_notifications.find { |n| n.notification_type == Notification.types[:replied] }
     return
   end
 end

 Para:
 # linked, quoted, mentioned, chat_quoted podem ser suprimidos se você já tiver qualquer notificação sobre esta
 postagem
 if [
      Notification.types[:quoted],
      Notification.types[:linked],
      Notification.types[:mentioned],
      Notification.types[:chat_quoted],
    ].include?(type)
   return if existing_notifications.any?
 end

Isso funcionará, mas estou um pouco preocupado porque há outras notificações que podem passar despercebidas aqui. (notificações de plugins, por exemplo, que talvez queiramos suprimir)

@lindsey, há uma questão de produto aqui: quando devemos suprimir uma notificação?

Acho que a pequena correção é um passo à frente?

Não tenho certeza. Isso não é uma notificação de resposta no meu vídeo? E, no entanto, ainda há uma notificação sobre a citação e o link depois. Portanto, estender isso para outros tipos de notificação pode não ajudar aqui. Mas talvez cubra outros casos extremos.
Será que o problema na minha reprodução é a notificação de “2 respostas”? Isso quebra a verificação de notificações existentes por aquela resposta quando a resposta é editada?

Em geral, eu esperaria nenhuma notificação adicional por causa de uma edição se todos os gatilhos já estivessem na postagem quando eu a li antes. Corrigir um erro de digitação não relacionado a menção/link/citação não deveria resultar em uma nova notificação.
Acho que, no caso de um gatilho ser substituído, eu preferiria que a notificação existente e não lida fosse alterada (ou substituída) em vez de receber uma segunda. Remover a @menção na postagem de um usuário para evitar ruído não deveria resultar em uma segunda notificação sobre a citação. Eu esperaria que a notificação sobre a @menção desaparecesse.
Acho que o único caso em que eu gostaria de uma nova notificação é se uma edição adicionasse um tipo de notificação mais importante. Então, quando alguém linkou minha postagem e mais tarde adiciona uma edição que me @menciona, faz sentido me avisar porque eles parecem não estar mais falando sobre algo que escrevi, mas diretamente comigo. Como uma edição não eleva mais o tópico, as @menções podem ser uma maneira útil de alertar os usuários sobre edições.

Acho que Moin descreve o ideal da perspectiva do usuário, mas acho que teríamos dificuldade em acertar esta parte:

Talvez possamos gerenciar isso para notificações no aplicativo, mas não podemos cancelar o envio de notificações push ou notificações por e-mail. (Em geral, sou hesitante em adicionar mais complexidade às notificações, então, embora alguns possam se contentar com notificações diferentes no aplicativo e por e-mail/push, eu preferiria que evitássemos isso.)

Concordo com isto, no entanto:

  • Se uma postagem deve notificar um usuário (por exemplo, o autor da postagem cita o Usuário A), notifique o(s) usuário(s) relevante(s) (por exemplo, o Usuário A recebe uma notificação de que foi citado).
  • Se uma edição nessa postagem não alterar quem deve ser notificado ou por quê (por exemplo, o autor da postagem edita um erro de digitação), não notifique ninguém.
  • Se uma edição nessa postagem alterar quem deve ser notificado (por exemplo, o autor da postagem menciona o Usuário B) ou por quê (por exemplo, o autor da postagem menciona o Usuário A), notifique o(s) usuário(s) impactado(s) (por exemplo, o Usuário B recebe uma notificação de menção, o Usuário A recebe uma notificação de menção).

@moin isso parece correto para você?

1 curtida