Observer su modello "controller:edit-category.tabs" non attivato

Ciao,

Sto cercando di osservare le modifiche al modello del controller EditCategoryTabs ma per qualche motivo non succede nulla:

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("Applica qui una logica quando cambia la categoria padre");
        }
      }
  );
}

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

Ho provato molte cose ma non sono ancora in grado di attivare l’osservatore quando il modello cambia. C’è qualcosa che ho trascurato che potrebbe spiegare come fare questo correttamente?

Per contesto, sto usando Discourse 3.5.1 compilato con il launcher ufficiale.

Grazie per il tuo aiuto!

Stavo guardando il tuo link e il controller è stato spostato in /admin: discourse/app/assets/javascripts/admin/addon/controllers/edit-category/tabs.js at main · discourse/discourse · GitHub

Non sono sicuro del perché non si attivi. Forse @observes non funziona bene in modifyClass?

In alternativa, cosa ne pensi di:

@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("Applica una logica qui quando cambia la categoria padre");
  }
}
3 Mi Piace

Grazie @Arkshine per aver dato un’occhiata! Ho modificato il post per riflettere la nuova posizione del file.

Ho pensato di sovrascrivere anche saveCategory, ma in quel caso vorrei applicare la logica non appena il modulo viene modificato. Ho anche provato a osservare le modifiche su formData (senza successo).