フッターのロードごと(またはページのロードごと)にファイアする方法

@Johani さん、こんにちは。「トリガーの発火方法」に関するこの問題の別バージョンとして、私がプラグイン内で Custom Header Links のバージョンを使用しているという状況があります。これは、私のプラグインが追加した別モデルで作成されたアイテム(「サーバー」)へのリンクを張るものです。server が作成された際、ヘッダーリンクを再構築して、最も最近作成された 2 つのサーバーへのリンクを張りたいと考えています。現在はイニシャライザー内でこれを行っており、機能は問題ないのですが、サーバー追加後に更新するにはページを再読み込みする必要があります。

以前、トリガーの追加と監視方法について教えていただいたので、自分で解決できるかと思いましたが、その処理を行っているページは discourse-subscriptions にあります。そこで、購入完了後に discourse-subscriptions に対して PR を提出し、以下のようなコードを追加するのはどうでしょうか。

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

購入が完了した後(購入がグループへの追加をトリガーし、それがサーバーの作成とユーザーのグループからの除外をトリガーする)に実行されるようにします。あるいは、購入完了後、または「購入完了」モーダルで「OK」をクリックした後にページを再読み込みさせるだけでも構いませんが、その方法もわかりません(試した方法はページが無限に再読み込みされてしまいました…)。

そこで、おそらくここ:

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

で、ローディングフラグを false に設定した後に以下を追加したいと考えています。

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

そうすれば、私のイニシャライザーで以下を追加してヘッダーの操作を行えるようになります。

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

そうすれば、おそらく以下のようなコードを変更する必要があります。なぜなら、このコードは header-buttons:before に追加するだけで置換しないため、発火するたびにリンクが増え続けてしまうのではないかと心配だからです。

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