لا أريد جعل أي شيء معقدًا جدًا.
كنت أطلع على بعض الكود الخاص بهذا (شكرًا @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.
أحاول المساعدة في حل هذه المشكلة، فأخبروني إذا كنتُ فقط مُزعجًا… ![]()