لا توجد إشعارات فئات للمستخدمين المرحّلين في الفئات الخاصة

المستخدمون المؤقتون (staged users) في نسختي لا يتلقون إشعارات البريد الإلكتروني للمشاركات في الفئات الخاصة، حتى لو تم إضافتهم إلى مجموعة تمنحهم الإذن بذلك. يبدو أن هذه المشكلة توقفت عن العمل مع تغيير حديث في Discourse.


:ballerina_shoes: خطوات إعادة الإنتاج:

  1. إنشاء مستخدم مؤقت
  1. إنشاء فئة مرئية فقط لمجموعة محددة (يمكن للأعضاء “إنشاء / الرد / المشاهدة”، دون منح أي أذونات أخرى).

  2. إضافة المستخدم المؤقت إلى المجموعة عن طريق إدخال عنوان بريدهم الإلكتروني في زر “الإضافة الجماعية إلى المجموعة”.

  • نافذة “إضافة الأعضاء” لا تتعرف على أسماء المستخدمين المؤقتين، ربما عن قصد.
  • ومع ذلك، يظهر المستخدم في قائمة الأعضاء.
  1. الانتقال إلى صفحة تفضيلات المستخدم المؤقت، وضبطهم على “مراقبة” الفئة.

  2. إنشاء مشاركة جديدة في الفئة الخاصة.

:white_check_mark: في موقع التطوير الخاص بمجتمعنا (يعمل بإصدار v2.4.0.beta3 +10)، يتم إرسال إشعار البريد الإلكتروني بنجاح إلى المستخدم المؤقت، وكذلك إلى أي مستخدمين غير مؤقتين يراقبون الفئة.

:negative_squared_cross_mark: في موقعنا المباشر (يعمل بإصدار 2.4.0.beta9)، لا يظهر أي شيء متعلق بالمشاركة في صفحة إشعارات المستخدم. إذا قمت بإلغاء حالة “مؤقت” للمستخدم عن طريق النقر على “انتحال الشخصية” في صفحة المسؤول الخاصة به، تبدأ الإشعارات في الوصول بشكل طبيعي.


:wrench: الموقعان لديهما تكوينات متطابقة تقريبًا (تم تفعيل SSO في كليهما).


:art: الخلفية

حالتنا الاستخدامية هي أننا ننقل قوائم البريد الإلكتروني إلى Discourse، ولكن هذه القوائم مخصصة لمجموعات فرعية خاصة من مجتمعنا (ومن هنا جاءت الفئة المرئية فقط لأعضاء مجموعة محددة). ونود دعم المستخدمين المؤقتين للأشخاص الذين يفضلون الاستمرار في التفاعل عبر البريد الإلكتروني، مما يجعل الانتقال من القوائم الحالية أسهل.

أسهل طريقة وجدناها لضمان استمرار حصول الأشخاص على جميع الرسائل المرسلة إلى قائمة البريد الإلكتروني افتراضيًا (أحد الفوائد الرئيسية للتحول إلى Discourse هو القدرة على تقليل مستوى البريد الإلكتروني دون مغادرة القائمة تمامًا، لذا يبدو من المنطقي البدء بالسلوك الحالي المتمثل في استلام كل شيء) هي استخدام إضافة group-category-notification من Mozilla لجعل جميع أعضاء المجموعة “يراقبون” الفئة.

لقد قرأت أن إمكانية إضافة المستخدمين المؤقتين إلى المجموعات “قد تتوقف عن العمل في أي لحظة”، لذا أنا منفتح على أفكار أخرى :pray:

إعجاب واحد (1)

لقد أضفنا إصلاحًا مؤخرًا لأن المستخدمين في مرحلة التجهيز كانوا يتلقون إشعارات لمحتوى لم يكن ينبغي أن يكونوا قادرين على رؤيته:

@Roman، ومع ذلك، إذا كان لدى المستخدم حق الوصول إلى المجموعة، فيجب أن يعمل الأمر بشكل صحيح، أليس كذلك؟

5 إعجابات

@eviltrout شكرًا لك، يبدو أن هذا هو المشكلة بالضبط:

# lib/guardian/topic_guardian.rb، السطر 152
-    can_see_category?(topic.category)
+    category = topic.category
+    can_see_category?(category) &&
+       (!category.read_restricted || !is_staged? || topic.user == user)

لقد تغير المنطق من التحقق مما إذا كان can_see_category?(topic.category) يمر (وأعتقد أنه يمر، وفقًا لما يلي)، إلى منع الإشعار إذا كان المستخدم في وضع «مُجهَّز» في جميع الحالات.

يبدو هذا خطأً؟ :bug: وإلا فلن تُرسَل إشعارات للمستخدمين المُجهَّزين أبدًا عن المنشورات في الفئات الخاصة، حتى لو مُنِحوا إذنًا صريحًا بذلك. هل يجب أن أنتقل إلى #contribute:bug؟

can_see_category?

أعتقد أن can_see_category? يمر بسبب السطر الأخير:

def can_see_category?(category)
    return false unless category
    return true if is_admin?
    return true if !category.read_restricted
    return true if is_staged? && category.email_in.present? && category.email_in_allow_strangers
    # هذا السطر:
    secure_category_ids.include?(category.id)
  end
  • المستخدم في وضع مُجهَّز
  • الفئة لديها عنوان بريد إلكتروني «وارد» مُعيَّن
  • category.email_in_allow_strangers مفعّل لقد عطلت email_in_allow_strangers لأنني أدركت أنني لا أحتاجها… لكن secure_category_ids.include?(category.id) يُرجع true
إعجاب واحد (1)

لقد قدمت طلب سحب يعيد إشعارات المستخدمين المؤجلين:

تعديل: تم الدمج! شكرًا لكم جميعًا

6 إعجابات

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.