Hey @Johani, 이 “트리거를 발생시키거나 트리거를 받는” 문제의 또 다른 버전은 플러그인에서 Custom Header Links의 변형 버전을 사용하고 있다는 점입니다. 이 링크는 플러그인이 추가하는 별도 모델에서 생성된 항목(“서버”)으로 연결됩니다. server가 생성되면, 헤더 링크를 다시 빌드하여 가장 최근에 생성된 두 개의 서버로 연결되도록 하고 싶습니다. 현재 이를 초기화자(initializer)에서 수행하고 있으며, 서버가 추가된 후 업데이트되려면 페이지를 다시 불러와야 한다는 점을 제외하면 잘 작동합니다.
트리거를 추가하고 관찰하는 방법을 알려주셨기 때문에, 스스로 해결할 수 있을 것 같다고 생각했지만, 작업을 수행하는 페이지는 discourse-subscriptions에 있습니다. 아마 제가 원하는 것은 discourse-subscriptions에 PR을 제출하여 구매가 완료된 후에
this.appEvents.trigger("purchase-complete")
를 추가하는 것일 것입니다(구매는 그룹에 추가를 트리거하고, 이는 서버 생성과 사용자 그룹 제거를 트리거합니다). 또는, 구매가 완료된 후에나 “구매 완료” 모달의 “확인” 버튼을 클릭했을 때 단순히 리로드를 트리거할 수 있다면 그것도 괜찮을 텐데, 그것도 어떻게 해야 할지 모르겠습니다(시도해본 것들은 페이지가 계속 무한히 리로드되는 결과를 낳았거든요…)
그래서 아마 여기에서:
로딩이 false로 설정된 후에
this.appEvents.trigger("successful-transaction")
를 추가하고, 그런 다음 초기화자에
this.appEvents.on("successful-transaction")
를 추가하여 헤더 조작을 수행할 수 있을 것입니다.
그렇게 한 후에는 다른 방식으로 처리해야 할 것 같습니다. 왜냐하면
api.decorateWidget("header-buttons:before", (helper) => {
return helper.h("ul.pfaffmanager-header-links", headerLinks);
});
이 코드는 header-buttons:before에 링크를 대체하는 것이 아니라 추가하기 때문에, 이벤트가 발생할 때마다 링크가 계속 늘어나지 않을까 걱정되기 때문입니다.