El botón de Zendesk no se actualiza correctamente al cambiar de tema sin refrescar la página

Hola, estoy experimentando un problema con el comportamiento del botón “Ver en Zendesk” del plugin de Zendesk. Cuando ya existe un ticket en Zendesk, el botón se muestra correctamente como “Ver en Zendesk”. Sin embargo, si navego a un tema diferente que no tiene un ticket de Zendesk correspondiente, el botón todavía muestra inicialmente “Ver en Zendesk” en lugar de “Crear ticket de Zendesk”. Una vez que actualizo la página, el botón se actualiza para mostrar la opción correcta “Crear ticket de Zendesk”.

Parece que el componente del botón no se está volviendo a renderizar al navegar a un nuevo tema. Creo que una solución podría implicar activar una nueva renderización de este componente cada vez que haya un cambio de página.

¿Alguien podría aconsejarme sobre la mejor manera de abordar esto, o si hay alguna forma de forzar la actualización correcta del componente al navegar? Cualquier información o sugerencia sería apreciada.

Hola,

¡Espero que te encuentres bien! Quería dar seguimiento y consultar si ha habido alguna actualización sobre este problema. Tus ideas o guía serían muy apreciadas.

¡Gracias de antemano!

Es posible que no esté detectando el cambio de página. Esto se debe probablemente a cómo el framework frontend (probablemente Ember.js, ya que Discourse lo usa) maneja la renderización de componentes durante la navegación.

Puedes agregar un listener para los cambios de ruta, algo similar a esto:


export default Component.extend({
  router: service(),

  didInsertElement() {
    this._super(...arguments);

    this.router.on('routeDidChange', () => {
      this.refreshZendeskButton();
    });
  },

  willDestroyElement() {
    this._super(...arguments);

    this.router.off('routeDidChange', this.refreshZendeskButton);
  },
});

Eso puede tener que ser modificado ya que usa setupComponent():

La comprobación de si hay un ticket válido de zendesk usa zendesk_id. ¿Quizás necesita un api.onPageChange()?