Exibir um diálogo modal após clicar no botão da barra de ferramentas via plugin

Olá a todos,

Tenho experiência em desenvolvimento iOS (Swift), apenas conhecimento superficial com Rails e Javascript. Estou tentando desenvolver um plugin para o Discourse e estou tendo problemas para exibir uma caixa de diálogo modal após clicar em um botão na barra de ferramentas da interface do editor de posts.

Consegui adicionar o botão com algo parecido com isto:

assets/javascripts/discourse/initializers/audio-message-button.js.es6

import { withPluginApi } from 'discourse/lib/plugin-api';

function initializeWithApi(api) {
  api.onToolbarCreate(toolbar => {
    toolbar.addButton({
      id: "audio_message",
      group: "extras",
      icon: "microphone",
      perform: (editor) => {
        
      }
    });
  });
}

export default {
  name: 'audio-message-button',
  initialize(container) {
    withPluginApi('0.12.0', api => initializeWithApi(api));
  }
};

Tenho tentado usar o ChatGPT para me ajudar no desenvolvimento, e ele fez várias sugestões em relação à estrutura de pastas. Usando componentes, templates, arquivos de controller, mas não consigo fazer o diálogo aparecer. Ou recebo mensagens de erro ou nada acontece.

Já tentei pesquisar no fórum aqui, mas não consigo encontrar nada que possa me ajudar com isso.

Alguém pode me indicar a direção correta sobre como devo configurar a estrutura de pastas e, especialmente, as convenções de nomenclatura dos arquivos envolvidos, para que eu possa exibir um diálogo modal simples para começar?

Agradeço antecipadamente!

EDIT: Estou ciente de que a função perform não faz nada no código acima. Tentei vários métodos para fazê-la funcionar, mas nada ajudou. Então a deixei em branco aqui, apenas demonstrando o que fiz até agora para fazer o botão aparecer na barra de ferramentas.

Olá Peter :slight_smile:

Eu não tenho o conhecimento para responder à sua pergunta, mas aqui estão um plugin e um componente de tema que ambos adicionam um botão ao compositor que abre uma janela modal, talvez você encontre algumas dicas em seus códigos:

1 curtida

Obrigado @Canapin,

estes plugins ajudaram a me direcionar na direção certa :slight_smile:

1 curtida

Sinta-se à vontade para compartilhar seu código de trabalho aqui, ele certamente ajudará outras pessoas :slight_smile:

1 curtida

Com certeza compartilharei o código funcionando aqui, o plugin inteiro, na verdade, quando estiver limpo e eu terminar com ele :slightly_smiling_face:

1 curtida

Compartilhando aqui como prometido:

1 curtida