Mostrar un diálogo modal al hacer clic en el botón de la barra de herramientas a través de un plugin

Hola a todos,

Tengo experiencia en desarrollo de iOS (Swift), solo experiencia superficial con Rails y Javascript. Estoy intentando desarrollar un plugin para Discourse y tengo problemas para mostrar un cuadro de diálogo modal después de hacer clic en un botón en la barra de herramientas de la interfaz del editor de publicaciones.

He añadido con éxito el botón a través de algo como esto:

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));
  }
};

He estado intentando utilizar ChatGPT para que me ayude con el desarrollo, y me hizo varias sugerencias con respecto a la estructura de carpetas. Usando componentes, plantillas, archivos de controlador, pero no puedo hacer que el diálogo se muestre. O recibo mensajes de error o no sucede nada.

He intentado buscar en el foro, pero no encuentro nada que me ayude con esto.

¿Alguien puede indicarme la dirección correcta sobre cómo configurar la estructura de carpetas y, especialmente, las convenciones de nomenclatura de los archivos involucrados, para que pueda mostrar un simple cuadro de diálogo modal para empezar?

¡Gracias de antemano!

EDIT: Soy consciente de que la función perform no hace nada en el código anterior. He intentado varios métodos para que funcione, pero nada ayudó. Así que lo dejé en blanco aquí, solo demostrando lo que he hecho hasta ahora para que el botón aparezca en la barra de herramientas.

Hola Peter :slight_smile:

No tengo los conocimientos para responder a tu pregunta, pero aquí tienes un plugin y un componente temático que ambos añaden un botón al compositor que abre una ventana modal, quizás encuentres algunas pistas en su código:

1 me gusta

Gracias @Canapin,

Estos complementos me ayudaron a ir en la dirección correcta :slight_smile:

1 me gusta

Siéntete libre de compartir tu código de trabajo aquí, seguro que ayudará a otras personas :slight_smile:

1 me gusta

Definitivamente compartiré el código funcional aquí, de hecho, todo el plugin, cuando esté depurado y haya terminado con él :slightly_smiling_face:

1 me gusta

Compartiendo esto aquí como prometí:

1 me gusta