Como obter informações de categoria do composer?

É possível executar algum código (de um componente de tema) quando uma categoria é selecionada no compositor? Estou interessado em obter a categoria selecionada tanto quando o compositor é aberto pela primeira vez quanto quando o menu suspenso de categorias é alterado.

Pensei que talvez fosse possível modificando um controlador ou um componente, como o controlador do compositor. Mas não consegui encontrar as informações da categoria.

Você pode observar model.categoryId no controlador do compositor e executar seu código quando a alteração ocorrer.

Obrigado, @fzngagan!

Uma pergunta de acompanhamento, nunca observei nenhum modelo antes :slight_smile: . Cheguei ao seguinte código que parece funcionar.

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;
    }
});

Essa é a maneira correta (ou preferida) de fazer isso? E é a melhor forma de obter o nome da categoria a partir do ID?

Você pode verificar o que o objeto model contém. Ele já pode ter o nome da categoria lá.

Com “objeto model”, você quer dizer que eu deveria fazer algo assim, certo?

this.get("model")

Edição:
De qualquer forma, o código funciona muito bem. Obrigado novamente!