编辑帖子会触发通知

我不想让事情变得太复杂。

我查看了其中的一些代码(感谢 @tshenry 提供的链接),看起来并不需要那么复杂。

群组提及目前是在 这里(第 78-80 行)触发的。expand_group_mentions() 函数 是一个生成器,负责输出应接收群组提及通知的用户(同时遵守如 SiteSetting.max_users_notified_per_group_mention 之类的策略)。

这似乎是一个放置此逻辑的自然位置。

在 create_notification 函数中,我们抑制了任何已经收到相同类型通知的用户的通知。这就是为什么编辑包含群组提及的帖子会触发新群组成员收到通知的原因——实际上会为群组中的所有用户生成通知,但随后会抑制那些已经收到该通知的人。

我建议采用类似的方法,通过更新 expand_group_mentions() 函数,过滤掉在 group_mentions 表中已有记录的群组。

类似这样(请原谅我对 Ruby 语法的不熟悉):

  def expand_group_mentions(groups, post)
    return unless post.user && groups

    Group.mentionable(post.user, include_public: false).where(id: groups.map(&:id)).each do |group|
      next if group.user_count >= SiteSetting.max_users_notified_per_group_mention

      # 添加对已提及群组的检查
      next if GroupMentions.where(group_id: group.id, post_id: post.id).length > 0

      yield group, group.users
    end

  end

不过,这对 JIT 警告没有任何作用。

我尽力帮忙解决这个问题,如果我只是在添乱,请告诉我……:slight_smile: