(größtenteils kopiert von Creating a component to show last-chance warning when replying to old topics)
Ich betreibe eine Community, die historisch gesehen ein kleines Problem mit dem “Necro-Bumping” von Threads hat.
Ich bin mit warn_reviving_old_topic_age vertraut (und wir haben es auch eingestellt), aber es scheint, dass viele Benutzer die Benachrichtigung nicht sehen. Wir wollen auch keine globalen Thread-Timer einführen, da es tatsächlich Anwendungsfälle gibt, in denen das Wiederbeleben eines alten Threads nützlich ist.
Unsere bisherige Lösung bestand darin, das Posten in einem “Sind Sie sicher”-Dialog zu blockieren, basierend auf dieser Komponente:
aber diese Komponente ist als defekt markiert (und tatsächlich ist unsere Version auch defekt). Gemäß dem Rat in meiner ursprünglichen Supportanfrage habe ich begonnen, mir den unformatted code detector anzusehen, der sehr nützlich war, aber ich kämpfe darum, das Ziel zu erreichen.
Derzeit habe ich etwas Ähnliches wie das Folgende:
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);
}
}
}
);
});
},
};
aber es scheint nicht zu funktionieren. Das Hinzufügen einiger Debug-Logs bestätigt, dass this.model?.topic?.last_posted_at tatsächlich undefiniert ist, und ich habe keine Ahnung, ob der Bestätigungsdialog auch funktioniert.
Jeder Rat wäre willkommen! Ich denke, allein das Erhalten eines ISO-Strings des aktuellen Bump-Datums des Threads (falls vorhanden) würde mir reichen, um Fortschritte zu machen.