(largamente copiado de Creating a component to show last-chance warning when replying to old topics)
Estou administrando uma comunidade que historicamente tem um problema com “necro-bumping” (ressuscitar tópicos antigos).
Eu conheço warn_reviving_old_topic_age (e o temos configurado), mas parece que muitos usuários não estão vendo o alerta. Também não queremos instituir temporizadores globais de tópicos, pois realmente existem casos de uso onde reviver um tópico antigo é útil.
Nossa solução anterior era bloquear a postagem em um diálogo de “tem certeza?” baseado neste componente:
mas esse componente está marcado como quebrado (e de fato nossa versão também está quebrada). Conforme o conselho em minha solicitação de suporte original, comecei a olhar para o detector de código não formatado, que tem sido muito útil, mas estou lutando para chegar ao fim.
Atualmente, tenho algo parecido com isto:
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 = `A última postagem neste tópico foi há ${diffH}. Tem certeza de que deseja ressuscitar este tópico?`;
this.dialog.yesNoConfirm({
message: confirmationMessage,
didConfirm: () => {
super.save(...args)
}
});
} else {
super.save(...args);
}
}
});
});
},
};
mas não parece estar funcionando. Adicionar alguns logs de depuração confirma que this.model?.topic?.last_posted_at é de fato indefinido, e não tenho ideia se o diálogo de confirmação funciona também.
Qualquer conselho seria apreciado! Acho que apenas obter uma string ISO da data de “bump” atual do tópico (se houver) seria o suficiente para eu progredir.