Observer em \"controller:edit-category.tabs\" model não acionado

Olá,

Estou tentando observar as alterações no modelo do controller EditCategoryTabs, mas, por algum motivo, nada acontece:

import { observes } from "@ember-decorators/object"
import { withPluginApi } from "discourse/lib/plugin-api"

function initialize(api) {
  api.modifyClass(
    "controller:edit-category.tabs",
    (Superclass) =>
      class extends Superclass {
        @observes("model.parent_category_id")
        onParentCategoryChange() {
          console.log("Aplicar alguma lógica aqui quando a categoria pai muda");
        }
      }
  );
}

export default {
  name: "new-category-permissions",
  initialize() {
    withPluginApi(initialize);
  },
}

Tentei muitas coisas, mas ainda não consigo acionar o observador quando o modelo muda. Há algo que eu tenha perdido que possa explicar como fazer isso corretamente?

Para contexto, estou usando o Discourse 3.5.1 compilado com o launcher oficial.

Obrigado pela ajuda!

Eu estava olhando seu link, e o controller foi movido para /admin: discourse/app/assets/javascripts/admin/addon/controllers/edit-category/tabs.js at main · discourse/discourse · GitHub

Não tenho certeza por que não dispara. Talvez @observes não funcione bem em modifyClass?

Como alternativa, o que você acha de:

@action
saveCategory(data) {
  const oldParentId = this.model.parent_category_id;
  super.saveCategory(data);
  const newParentId = this.model.parent_category_id;

  if (oldParentId !== newParentId) {
    console.log("Aplique alguma lógica aqui quando a categoria pai mudar");
  }
}
3 curtidas

Obrigado @Arkshine por dar uma olhada! Editei a postagem para refletir o novo local do arquivo.

Pensei em sobrescrever saveCategory também, mas nesse caso eu gostaria de aplicar a lógica assim que o formulário for modificado. Eu até tentei observar a mudança em formData (sem sucesso).