Come ottenere informazioni sulla categoria da composer?

È possibile eseguire del codice (da un componente del tema) quando una categoria viene selezionata nel composer? Sono interessato a ottenere la categoria selezionata sia quando il composer viene appena aperto sia quando il menu a tendina delle categorie viene modificato.

Stavo pensando che forse fosse possibile modificando un controller o un componente, come il controller del composer. Ma non sono riuscito a trovare le informazioni sulla categoria…

Puoi osservare model.categoryId nel controller del composer ed eseguire il tuo codice quando si verifica la modifica.

Grazie @fzngagan!

Una domanda di follow-up, non ho mai visto un modello simile prima :slight_smile: . Ho elaborato quanto segue che sembra funzionare.

const { observes } = require('discourse-common/utils/decorators');
api.modifyClass("controller:composer", {
    @observes('model.categoryId')
    getCategory() {
        let categoryId = this.get("model.categoryId");
        if (categoryId == null) return;
        
        let category = this.site.categories.findBy("id", categoryId).name;
    }
});

È questo il modo corretto (o preferito) per farlo? E questo è il modo migliore per ottenere il nome della categoria dall’ID?

Puoi controllare cosa contiene l’oggetto model. Potrebbe già avere il nome della categoria al suo interno.

Con “model object”, intendi che dovrei fare qualcosa del genere, giusto?

this.get("model")

Modifica:
Comunque, il codice funziona benissimo. Grazie ancora!