Observateur sur le modèle "controller:edit-category.tabs" non déclenché

Bonjour,

J’essaie d’observer les changements du modèle du contrôleur EditCategoryTabs mais pour une raison quelconque, rien ne se passe :

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("Appliquer une logique ici lorsque la catégorie parente change");
        }
      }
  );
}

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

J’ai essayé beaucoup de choses mais je ne parviens toujours pas à déclencher l’observateur lorsque le modèle change. Y a-t-il quelque chose que j’ai manqué et qui pourrait expliquer comment faire cela correctement ?

Pour le contexte, j’utilise Discourse 3.5.1 construit avec le lanceur officiel.

Merci pour votre aide !

J’ai regardé votre lien, et le contrôleur a été déplacé vers /admin : discourse/app/assets/javascripts/admin/addon/controllers/edit-category/tabs.js at main · discourse/discourse · GitHub

Je ne suis pas sûr pourquoi cela ne se déclenche pas. Peut-être que @observes ne fonctionne pas bien dans modifyClass ?

Alternativement, que pensez-vous 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("Appliquer une logique ici lorsque la catégorie parente change");
  }
}
3 « J'aime »

Merci @Arkshine d’avoir jeté un coup d’œil ! J’ai modifié le message pour refléter le nouvel emplacement du fichier.

J’ai pensé à remplacer saveCategory également, mais dans ce cas, j’aimerais appliquer la logique dès que le formulaire est modifié. J’ai même essayé d’observer le changement sur formData (sans succès).