Cómo disparar en cada carga de pie (o carga de página?)

¡Hola @Johani! Otra variante de este problema de “cómo activar o ser activado” es que estoy usando una versión de Custom Header Links en un plugin. Este enlaza a algunos elementos (“servidores”) creados en un modelo separado que agrega mi plugin. Cuando se crea un server, quiero reconstruir los enlaces del encabezado para que apunten a los dos servidores creados más recientemente. Lo estoy haciendo ahora en un inicializador y funciona bien, excepto que para que se actualice después de agregar un servidor, tienes que recargar la página.

Me dijiste cómo agregar y observar triggers, así que pensé que podría resolverlo, pero la página que realiza el trabajo está en discourse-subscriptions. Quizás lo que quiero hacer es enviar un PR a discourse-subscriptions que agregue un:

 this.appEvents.trigger("purchase-complete")

después de que se complete una compra (y la compra active la adición a un grupo, lo que active la creación de un servidor y la eliminación del usuario del grupo). O, si pudiera simplemente activar una recarga después de que se complete la compra, o cuando hagan clic en “Aceptar” en el modal de “compra completada”, también me serviría, pero no sé cómo hacerlo (lo que intenté recargó la página infinitamente…).

Así que tal vez aquí:

https://github.com/discourse/discourse-subscriptions/blob/main/assets/javascripts/discourse/controllers/s-show.js.es6#L71-L81

Quisiera agregar un:

 this.appEvents.trigger("successful-transaction")

después de que loading se establezca en false, y luego mi inicializador podría agregar un:

 this.appEvents.on("successful-transaction")

para manipular el encabezado.

Creo que una vez que haga eso, necesitaré hacer algo diferente porque temo que:

      api.decorateWidget("header-buttons:before", (helper) => {
        return helper.h("ul.pfaffmanager-header-links", headerLinks);
      });

agregue a header-buttons:before en lugar de reemplazarlos, por lo que obtendré más enlaces cada vez que se ejecute.