Zendeskボタン、トピック変更時にページリフレッシュなしで正しく更新されない

Zendeskプラグインの「Zendeskで表示」ボタンの動作に問題が発生しています。チケットがZendeskに既に存在する場合、ボタンは正しく「Zendeskで表示」と表示されます。しかし、対応するZendeskチケットがない別のトピックに移動した場合でも、ボタンは最初に「Zendeskで表示」と表示され、「Zendeskチケットを作成」と表示されるべきところが更新されません。ページをリフレッシュすると、ボタンは正しく「Zendeskチケットを作成」オプションを表示するように更新されます。

ボタンコンポーネントが新しいトピックへのナビゲーション時に再レンダリングされていないようです。解決策としては、ページが変更されるたびにこのコンポーネントの再レンダリングをトリガーすることが考えられます。

この問題への最善のアプローチ、またはナビゲーション時にコンポーネントを正しく更新するように強制する方法について、どなたかアドバイスをいただけますでしょうか?ご意見やご提案をいただけると幸いです。

こんにちは。

お元気でお過ごしのことと思います。この件に関して、何かアップデートがあったか確認したく、ご連絡いたしました。ご意見やご指導をいただけると大変助かります。

よろしくお願いいたします。

ページ変更を検出していない可能性があります。これは、フロントエンドフレームワーク(おそらくEmber.js、Discourseが使用しているため)がナビゲーション中にコンポーネントレンダリングを処理する方法によるものと思われます。

次のようなルート変更リスナーを追加できます。


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

setupComponent() を使用しているため、修正が必要になる場合があります。

有効な Zendesk チケットがあるかどうかのチェックには zendesk_id が使用されています。api.onPageChange() が必要になるのではないでしょうか?