컴포저에서 카테고리가 변경될 때마다 함수를 트리거하는 방법

아마도 너무 당연한 부분을 놓치고 있는 것 같아, 만약 그렇다면 미리 사과드립니다.

제 플러그인에는 각 카테고리에 대해 커스텀 설정이 있으며, 이 설정은 컴포저(composer)에서 토글 스위치를 표시/숨기는 데 사용됩니다. 이 토글 스위치는 글리머(glimmer) 컴포넌트에서 설정되며, 이니셜라이저(initializer)가 composer-fields 플러그인 아웃렛에 렌더링하도록 호출합니다.

제 목표는 커스텀 설정의 값에 따라, 컴포저 내에서 카테고리가 변경될 때마다 토글 스위치를 표시하거나 숨기는 것입니다.

플러그인 아웃렛의 outletArgs에 옵저버(observer)를 추가하는 것이 가능한가요? 컴포저 모델은 outletArgs에 설정되므로, 이를 통해 categoryId에 옵저버를 설정하면 좋겠다는 생각이 들었습니다. 그런 다음 해당 카테고리의 커스텀 설정 값을 확인하는 함수를 실행하려 했습니다. 하지만 옵저버 설정에 어려움을 겪고 있습니다. 옵저버를 잘못 설정하고 있는 것일 수도 있고, 저는 EmberJS를 아직 잘 모르는 편입니다.

혹시 이 문제를 해결할 다른 방법이 있을까요?

참고로 현재 저는 Discourse v3.4.7을 사용하고 있습니다.

미리 감사합니다!

GitHub - discourse/discourse-custom-composer-placeholders · GitHub 이 저장소가 이를 수행하는 방법에 대한 예시로 적합할 것 같습니다.
이 저장소는 카테고리별로 컴포저의 플레이스홀더를 변경하며, 카테고리를 변경할 때도 정상적으로 작동합니다.

답변 감사합니다.

해당 솔루션을 시도해 보았지만, 불행히도 제가 빌딩을 진행 중인 버전은 초기화된 트랜스포머 목록이 오래되어 composer-editor-reply-placeholder가 누락되어 있는 것으로 보입니다.

조금 더 맥락을 설명하자면, registerConnectorClass API가 비추천(deprecated)된 이후 플러그인 기능을 Glimmer 컴포넌트 사용을 기반으로 리팩터링하고 있습니다. 아래 코드는 원래 설정되어 있던 내용입니다.

export default {
  initialize(container) {
    withPluginApi("1.6.0", api => {
      api.registerConnectorClass("composer-fields", "handlebars-template-name", {
        setupComponent(attrs, component) {
          const model = attrs.model;
          const controller = api.container.lookup("controller:composer");
          if (controller) {
            controller.addObserver("model.categoryId", this, function () {

              // showToggle 및 isRestricted 값 설정 로직

              let props = {
                showField: showToggle && isRestricted,
              }
              component.setProperties(Object.assign(props));
            })
          }
        }
      }

Glimmer 컴포넌트를 통해 동일한 기능을 구현할 다른 방법이 있을까요? 특히 모델(model) 및/또는 categoryId의 변경 사항을 관찰하는 부분에 대해 알고 싶습니다.