同じ返信に関する複数の通知を受け取る

最初に、Topics from some categories do not appear on /latest - #36 by JammyDodger での編集後に、リンク、引用、メンションが追加されていないにもかかわらず、同じ返信に対する2回目の通知に気づきました。これは以下の再現手順とは少し異なりますが、根本的な問題は同じだと思います。

2回目の発生は、Messages section for sidebar - #13 by nathank で起こりました。同様に、編集によって通知を発生させるようなものは何も追加されず、引用は以前から存在していたにもかかわらず、再度通知が来ました。

以下は、私が発見した再現手順です(少なくともほとんどの場合機能します。時には編集で@メンションを追加しても新しい通知がトリガーされないことさえあります)。

3人のユーザーが必要です:OP、notifiedUsers、spammer

  1. OPがトピックを作成します
  2. notified userが返信します
  3. OPが notified user の投稿に返信します
  • notifiedUser は返信について通知されます(期待通り)
  1. spammer が notifiedUser の投稿に返信します。返信には、notifiedUserによる別の投稿へのリンクと、返信元の投稿からの引用が含まれます。(オプション:notifiedUserに@メンションを追加することもできます)
  • notifiedUser は返信について通知されます(期待通り)
  • [ @メンションを追加した場合、通知は @メンションに関するものです(期待通り)]
  1. notifiedUser は新しい返信を読んで通知を既読にし、見逃さないようにどこか別の場所に移動します。
  2. spammer が返信を編集してタイポを修正します(または edit1 を追加します)
  • notifiedUser は引用されたことについて通知されます(予期せず。彼らはこの返信についてすでに通知されており、引用は以前から存在していたため、伝える必要はありません)
  1. spammer が別のタイポを修正するために返信を再度編集します(または edit2 を追加します)
  • notifiedUser はリンクされたことについて通知されます(予期せず。彼らはこの返信についてすでに通知されており、リンクは以前から存在していたため、伝える必要はありません)

ビデオは最終ステップの 5-7 のみを示しています。spammer は左側、notifiedUser は右側です

「いいね!」 2

post_alerter.rb

589-599行目を以下のように変更します。
 # linked, quoted, mentioned, chat_quoted は、すでに返信通知がある場合は抑制される可能性があります
 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

 以下のように:
 # linked, quoted, mentioned, chat_quoted は、この投稿に関する既存の通知がある場合は抑制される可能性があります
 if [
      Notification.types[:quoted],
      Notification.types[:linked],
      Notification.types[:mentioned],
      Notification.types[:chat_quoted],
    ].include?(type)
   return if existing_notifications.any?
 end

これで機能しますが、他の通知(例えば、抑制したい可能性のあるプラグイン通知など)がここをすり抜ける可能性があるため、少し懸念があります。

@lindsey ここで通知を抑制すべきなのはいつか、製品に関する質問があります。

この小さな修正は一歩前進でしょうか?