(منسوخ إلى حد كبير من Creating a component to show last-chance warning when replying to old topics)
أدير مجتمعًا لديه تاريخيًا مشكلة في إعادة إحياء المواضيع القديمة.
أنا على دراية بـ warn_reviving_old_topic_age (ولدينا بالفعل تم ضبطه)، ولكن يبدو أن العديد من المستخدمين لا يرون التنبيه. كما أننا لا نريد تطبيق مؤقتات مواضيع عامة لأنه توجد بالفعل حالات استخدام يكون فيها إحياء الموضوع القديم مفيدًا.
كان حلنا السابق هو حظر النشر في مربع حوار “هل أنت متأكد” بناءً على هذا المكون:
ولكن هذا المكون مُصنف على أنه معطل (وبالفعل نسختنا معطلة أيضًا). وفقًا للنصيحة الواردة في طلب الدعم الأصلي الخاص بي، بدأت في النظر إلى كاشف الرموز غير المهيأة، والذي كان مفيدًا للغاية، ولكني أواجه صعوبة في الوصول إلى النهاية.
حاليًا، لدي شيء يبدو كالتالي:
import { withPluginApi } from "discourse/lib/plugin-api";
import { inject as service } from "@ember/service";
export default {
name: "discourse-necro-warnings",
initialize() {
withPluginApi("0.8.8", (api) => {
api.modifyClass("service:composer", (Superclass) =>
class extends Superclass {
save(...args) {
let lastPostedAt = moment(this.model?.topic?.last_posted_at);
let now = moment();
let diff = now - lastPostedAt;
console.log(diff);
let d = moment.duration(settings.death_timer);
if (diff >= d && !skipWarning) {
// TODO: i18n
let diffH = moment.duration(diff).humanize();
let confirmationMessage = `The last post in this thread was ${diffH} ago. Are you sure you want to bump this thread?`;
this.dialog.yesNoConfirm({
message: confirmationMessage,
didConfirm: () => {
super.save(...args);
},
});
} else {
super.save(...args);
}
}
}
);
});
},
};
ولكن يبدو أنه لا يعمل. يؤكد إضافة بعض سجلات التصحيح أن this.model?.topic?.last_posted_at هو بالفعل غير معرف، وليس لدي فكرة عما إذا كان مربع حوار التأكيد يعمل أيضًا.
أي نصيحة ستكون موضع تقدير! أعتقد أن مجرد الحصول على سلسلة ISO لتاريخ آخر مشاركة للموضوع الحالي (إن وجد) سيكون كافياً لي لإحراز تقدم.