(copiado en gran parte de Creating a component to show last-chance warning when replying to old topics)
Estoy dirigiendo una comunidad que históricamente tiene un pequeño problema con el “necro-bumping” de hilos.
Estoy familiarizado con warn_reviving_old_topic_age (y lo tenemos configurado), pero parece que muchos usuarios no ven la alerta. Tampoco queremos instituir temporizadores globales de temas porque realmente hay casos de uso en los que revivir un hilo antiguo es útil.
Nuestra solución anterior fue bloquear la publicación en un diálogo de “estás seguro” basado en este componente:
pero ese componente está marcado como roto (y de hecho, nuestra versión también está rota). Según el consejo de mi solicitud de soporte original, he comenzado a mirar el detector de código no formateado, que ha sido muy útil, pero me cuesta llegar a la meta.
Actualmente, tengo algo parecido a esto:
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 = `La última publicación en este hilo fue hace ${diffH}. ¿Estás seguro de que quieres revivir este hilo?`;
this.dialog.yesNoConfirm({
message: confirmationMessage,
didConfirm: () => {
super.save(...args);
},
});
} else {
super.save(...args);
}
}
}
);
});
},
};
pero no parece estar funcionando. Agregar algunos registros de depuración confirma que this.model?.topic?.last_posted_at es de hecho indefinido, y tampoco tengo idea de si el diálogo de confirmación funciona.
¡Cualquier consejo sería apreciado! Creo que solo obtener una cadena ISO de la fecha de publicación actual del tema (si la hay) sería suficiente para que yo progrese.