المنشور الثاني الذي حدث فيه هذا كان على Messages section for sidebar - #13 by nathank. كان الأمر مشابهًا: لم يضف التعديل أي شيء من شأنه أن يؤدي إلى إشعار - كان الاقتباسان موجودين من قبل - ومع ذلك تم إعلامي مرة ثانية.
فيما يلي خطوات إعادة الإنتاج التي وجدتها والتي نجحت [1]
أنت بحاجة إلى 3 مستخدمين: OP، notifiedUser، spammer
ينشئ OP موضوعًا
يرد notifiedUser
يرد OP على منشور notifiedUser يتم إخطار notifiedUser بالرد (متوقع)
يرد spammer على منشور notifiedUser. يحتوي الرد على رابط لمنشور آخر بواسطة notifiedUser واقتباس من المنشور الذي ترد عليه. (اختياري: يمكنك أيضًا @الإشارة إلى notifiedUser) يتم إخطار notifiedUser بالرد (متوقع) [في حال أضفت @إشارة، يكون الإشعار بخصوص @الإشارة (متوقع)]
يقرأ notifiedUser الردود الجديدة لوضع علامة على الإشعارات كـ مقروءة ويتنقل إلى مكان آخر حتى لا نفوت أي إشعار.
يقوم spammer بتعديل الرد لإصلاح خطأ مطبعي (أو يضيف edit1) يتم إخطار notifiedUser بالاقتباس (غير متوقع، لقد تم إخطاره بهذا الرد من قبل وكان الاقتباس موجودًا من قبل، لا حاجة لإخباره)
يقوم spammer بتعديل الرد مرة أخرى لإصلاح خطأ مطبعي آخر (أو يضيف edit2) يتم إخطار notifiedUser بالارتباط (غير متوقع، لقد تم إخطاره بهذا الرد من قبل وكان الرابط موجودًا من قبل، لا حاجة لإخباره)
يعرض الفيديو الخطوات النهائية 5-7 فقط. spammer على اليسار، notifiedUser على اليمين
على الأقل في معظم الأوقات، وفي بعض الأحيان لا يؤدي حتى إضافة @إشارة في التعديل إلى إطلاق إشعار جديد ↩︎
غيّر الأسطر 589-599 من:
# قد يتم كبت الإشعارات المرتبطة، أو المقتبسة، أو المذكورة، أو المقتبسة في الدردشة إذا كان لديك بالفعل إشعار رد
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
إلى:
# قد يتم كبت الإشعارات المرتبطة، أو المقتبسة، أو المذكورة، أو المقتبسة في الدردشة إذا كان لديك بالفعل أي إشعار حول هذا
# المنشور
if [
Notification.types[:quoted],
Notification.types[:linked],
Notification.types[:mentioned],
Notification.types[:chat_quoted],
].include?(type)
return if existing_notifications.any?
end
هذا سيعمل ولكني قلق بعض الشيء لأنه قد تتسرب إشعارات أخرى هنا. (إشعارات الإضافات (plugins) على سبيل المثال والتي قد نرغب في كبتها)
@lindsey هناك سؤال يتعلق بالمنتج هنا، متى يجب علينا كبت إشعار؟
لست متأكداً. أليس هذا إشعار رد في الفيديو الخاص بي؟ ومع ذلك، لا يزال هناك إشعار حول الاقتباس والرابط بعد ذلك. لذا، فإن تمديد ذلك لأنواع الإشعارات الأخرى قد لا يساعد هنا. ولكن ربما يغطي حالات حافة أخرى.
أتساءل عما إذا كانت المشكلة في طريقة إعادة إنتاجي هي إشعار “ردان”. هل يكسر ذلك التحقق من الإشعارات الموجودة بواسطة هذا الرد عند تعديل الرد؟
بشكل عام، أتوقع عدم وجود إشعار إضافي بسبب التعديل إذا كانت جميع المشغلات موجودة بالفعل في المنشور عندما قرأته من قبل. لا ينبغي أن يؤدي إصلاح خطأ مطبعي غير متعلق بالإشارة/الرابط/الاقتباس إلى إشعار جديد.
أعتقد أنه في حالة استبدال المشغل، أفضل أن يتم تغيير الإشعار غير المقروء الحالي (أو استبداله) بدلاً من تلقي إشعار ثانٍ. لا ينبغي أن يؤدي إزالة الإشارة @ في منشور المستخدم لتجنب الضوضاء إلى إشعار ثانٍ حول الاقتباس. أتوقع أن يختفي الإشعار الخاص بالإشارة @.
أعتقد أن الحالة الوحيدة التي أرغب فيها في الحصول على إشعار جديد هي إذا أضاف التعديل نوع إشعار أكثر أهمية. لذلك، عندما يربط شخص ما منشوري ثم يضيف تعديلاً يشير إليّ @، فمن المنطقي إخباري لأنهم لم يعودوا يتحدثون عن شيء كتبته ولكن مباشرة إليّ. نظرًا لأن التعديل لم يعد يرفع الموضوع، فقد تكون الإشارات @ طريقة مفيدة لتنبيه المستخدمين بشأن التعديلات.
أعتقد أن موين يصف الوضع المثالي من منظور المستخدم، ولكني أعتقد أننا سنواجه صعوبة في تحقيق هذا الجزء بشكل صحيح:
ربما يمكننا إدارة ذلك للإشعارات داخل التطبيق، لكن لا يمكننا إلغاء إرسال إشعارات الدفع (push notifications) أو إشعارات البريد الإلكتروني. (بشكل عام، أنا متردد في إضافة المزيد من التعقيد إلى الإشعارات، لذا في حين أن البعض قد يوافق على أن يكون الإشعار داخل التطبيق والبريد الإلكتروني/الدفع مختلفين، فأنا أفضل أن نتخلى عن هذا.)
ومع ذلك، أتفق مع هذا:
إذا كان من المفترض أن يُعلِم منشور مستخدمًا ما (على سبيل المثال، مؤلف المنشور يقتبس المستخدم أ)، قم بإعلام المستخدم (المستخدمين) المعنيين (على سبيل المثال، يتلقى المستخدم أ إشعارًا بأنه تم اقتباسه).
إذا كان التعديل على هذا المنشور لا يغير من يجب إعلامه أو سبب إعلامه (على سبيل المثال، يقوم مؤلف المنشور بتعديل خطأ مطبعي)، فلا تقم بإعلام أي شخص.
إذا كان التعديل على هذا المنشور يغير من يجب إعلامه (على سبيل المثال، يذكر مؤلف المنشور المستخدم ب) أو السبب (على سبيل المثال، يذكر مؤلف المنشور المستخدم أ)، قم بإعلام المستخدم (المستخدمين) المتأثرين (على سبيل المثال، يتلقى المستخدم ب إشعارًا بالإشارة، ويتلقى المستخدم أ إشعارًا بالإشارة).