Abrindo uma janela de resposta via URL

Eu uso um componente de tema simples para isso na minha instância. Abaixo está uma adaptação da minha – que também aceita #upload (uma nova resposta abrindo a janela de upload no desktop) e #edit (para OPs de wiki), além de #reply.

Precisa de alguns ajustes, como evitar setTimeout e gerenciar corretamente o draftSequence (não acho que topic.draft_sequence esteja correto), e não sei qual seria a melhor prática aqui. Dito isso, está funcionando bem para mim.

Navegar para qualquer tópico como /t/[slug]/[id]#reply abrirá o compositor com uma nova resposta vazia.

Se precisar de algum texto pré-preenchido, é possível definindo o atributo reply no objeto passado para composer.open. Além disso, se já houver um rascunho para esse tópico, ele perguntará se você deseja salvar/descartá-lo antes de criar essa nova resposta – o draftSequence precisa estar correto se o comportamento desejado for retomar esse rascunho.

<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 isso ajude.

13 curtidas