Abrir una ventana de respuesta a través de URL

Uso un componente de tema sencillo para esto en mi instancia. A continuación, una adaptación de la mía, que también acepta #upload (una nueva respuesta que abre la ventana de carga en escritorio) y #edit (para los OP de wikis), además de #reply.

Necesita algunos ajustes, como evitar setTimeout y gestionar correctamente draftSequence (no creo que topic.draft_sequence sea lo adecuado), y no sé cuál sería la mejor práctica aquí. Dicho esto, me funciona bien.

Navegar a cualquier tema como /t/[slug]/[id]#reply abrirá el editor con una nueva respuesta vacía.

Si necesitas texto prellenado, es posible configurando el atributo reply en el objeto pasado a composer.open. Además, si ya existe un borrador para ese tema, preguntará si deseas guardarlo o descartarlo antes de crear esta nueva respuesta; draftSequence debe ser correcto si el comportamiento deseado es reanudar ese borrador.

<script type="text/discourse-plugin" version="0.4">
  if (/.*#reply$/g.test(document.URL)) {
    const { REPLY } = require('discourse/models/composer').default;
    
    const composer = Discourse.__container__.lookup('controller:composer');
    
    setTimeout(function() {
      const topic = Discourse.__container__.lookup("controller:topic").get("model");
      if (topic) {
        composer.open({
            action: REPLY,
            draftKey: topic.draft_key,
            draftSequence: topic.draft_sequence,
            topic,
        });
      }
    }, 0)
  }
</script>

Espero que esto ayude.

13 Me gusta