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 fosse adicionado 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 descobri que funcionaram [1]

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

  1. OP cria um tópico
  2. Usuário notificado responde
  3. OP responde à postagem do usuário notificado
    usuário notificado é notificado sobre a resposta (esperado)
  4. Spammer responde à postagem do usuário notificado. A resposta contém um link para outra postagem do usuário notificado e uma citação da postagem à qual você está respondendo. (opcional: você também pode @mencionar o usuário notificado)
    usuário notificado é notificado sobre a resposta (esperado)
    [Caso você tenha adicionado uma @menção, a notificação é sobre a @menção (esperado)]
  5. Usuário notificado 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)
    usuário notificado é notificado por ter sido citado (inesperado, eles 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)
    usuário notificado é notificado por ter sido vinculado (inesperado, eles 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 está à 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 ↩︎

2 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?