Le bouton Zendesk ne se met pas à jour correctement lors du changement de sujet sans rafraîchissement de la page

Salut, je rencontre un problème avec le comportement du bouton « Afficher sur Zendesk » du plugin Zendesk. Lorsqu’un ticket existe déjà dans Zendesk, le bouton s’affiche correctement comme « Afficher sur Zendesk ». Cependant, si je navigue vers un autre sujet qui n’a pas de ticket Zendesk correspondant, le bouton affiche toujours initialement « Afficher sur Zendesk » au lieu de « Créer un ticket Zendesk ». Une fois que j’actualise la page, le bouton se met à jour pour afficher la bonne option « Créer un ticket Zendesk ».

Il semble que le composant du bouton ne se ré-affiche pas lors de la navigation vers un nouveau sujet. Je pense qu’une solution pourrait impliquer de déclencher un ré-affichage de ce composant chaque fois qu’il y a un changement de page.

Quelqu’un pourrait-il me conseiller sur la meilleure façon d’aborder ce problème, ou s’il existe un moyen de forcer le composant à se mettre à jour correctement lors de la navigation ? Toutes les idées ou suggestions seraient appréciées.

Bonjour,

J’espère que vous allez bien ! Je voulais faire un suivi et vérifier s’il y a eu une mise à jour concernant ce problème. Vos idées ou vos conseils seraient grandement appréciés.

Merci d’avance !

Il se peut que le changement de page ne soit pas détecté. Cela est probablement dû à la manière dont le framework frontend (probablement Ember.js, puisque Discourse l’utilise) gère le rendu des composants lors de la navigation.

Vous pouvez ajouter un écouteur pour les changements de route, quelque chose de similaire à ceci :


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

Cela devra peut-être être modifié car il utilise setupComponent() :

La vérification s’il existe un ticket zendesk valide utilise zendesk_id. Peut-être a-t-il besoin d’un api.onPageChange() ?