Substituindo arquivos .gjs - não é possível?

Olá,

com uma atualização recente um dos nossos componentes quebrou. O componente estava anteriormente estendendo o botão de citação inline, que era quote-button.hbs. Este arquivo não existe mais - em vez disso, todo o código foi movido para um arquivo gjs post-text-selection-toolbar.gjs e se eu tentar sobrescrevê-lo da “maneira antiga”, o navegador reclama com a seguinte mensagem.

component-templates.js:62 [discourse/theme-48/discourse/templates/components/post-text-selection-toolbar] post-text-selection-toolbar foi criado usando gjs e seu template não pode ser sobrescrito. Ignorando sobrescrita.

Isso significa que esta parte da interface do usuário no Discourse só pode ser direcionada pelos PluginOutlets definidos lá?

  <PluginOutlet
                @name="quote-share-buttons-after"
                @connectorTagName="span"
              />

 <PluginOutlet @name="quote-button-after" @connectorTagName="div" />

E se eu precisasse de mais controle sobre o estado dos botões e os novos adicionados. Sinto que isso limita a funcionalidade.

Alguém sabe como lidar com esse caso?

3 curtidas

Olá :waving_hand:

Acho que isso pode ser possível agora com api.renderInOutlet?

5 curtidas

Olá @Sören_Geier - isso está correto, você precisará usar “plugin outlets” para fazer alterações nesta parte da interface do usuário. Os “plugin outlets” são uma maneira muito mais robusta de estender as coisas e serão mais confiáveis ​​em todas as atualizações principais do Discourse.

Se os “plugin outlets” existentes não funcionarem para o seu caso de uso, por favor, nos informe e teremos prazer em considerar a introdução de novos.

Neste caso, você pode se interessar pela proposta em DEV: Add outlet and API for adding/controlling post selection buttons by keegangeorge · Pull Request #23782 · discourse/discourse · GitHub. Ela introduz um “wrapper plugin outlet” que permitirá que temas/plugins substituam totalmente a implementação principal, se necessário.

Esta é uma maneira alternativa de renderizar coisas em “plugin outlets”, sim. Mas é mais uma questão de estilo de código - na verdade, não introduz novos recursos quando comparado aos arquivos /connectors/....

7 curtidas