تعديل المنشورات يتسبب في إرسال إشعارات

لا أريد جعل أي شيء معقدًا جدًا.

كنت أطلع على بعض الكود الخاص بهذا (شكرًا @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: