Posso estar perdendo algo óbvio aqui, então peço desculpas antecipadamente se for o caso.
Meu plugin tem uma configuração personalizada para cada categoria, que é usada para mostrar/ocultar um interruptor no compositor. O interruptor é configurado em um componente Glimmer, que é chamado por um inicializador para renderizar no outlet composer-fields.
Meu objetivo é que o compositor mostre/oculte o interruptor sempre que a categoria for alterada dentro do compositor, dependendo do valor da configuração personalizada associada a essa categoria.
É possível adicionar um observador ao outletArgs de um outlet de plugin? O modelo do compositor é definido em outletArgs, então pensei em definir o observador no categoryId através dele. Em seguida, executaria uma função para verificar o valor da configuração personalizada na categoria. Mas estou tendo problemas para configurar o observador. Pode ser que eu esteja configurando incorretamente, pois sou relativamente novo no EmberJS.
Ou existe uma maneira diferente de conseguir isso?
Como contexto, estou atualmente executando o Discourse v3.4.7.
Tentei esta solução, mas infelizmente parece que a versão em que estou construindo tem uma lista mais antiga de transformadores inicializados, que por acaso está faltando o composer-editor-reply-placeholder.
Para um pouco mais de contexto, estou refatorando os recursos do plugin para usar componentes Glimmer após a descontinuação da API registerConnectorClass. O código abaixo é o que foi configurado originalmente.
export default {
initialize(container) {
withPluginApi("1.6.0", api => {
api.registerConnectorClass("composer-fields", "handlebars-template-name", {
setupComponent(attrs, component) {
const model = attrs.model;
const controller = api.container.lookup("controller:composer");
if (controller) {
controller.addObserver("model.categoryId", this, function() {
// lógica para definir valores para showToggle e isRestricted
let props = {
showField: showToggle && isRestricted,
}
component.setProperties(Object.assign(props));
})
}
}
}
Existe outra maneira de obter a mesma funcionalidade de um componente Glimmer? Especificamente observando mudanças no model e/ou categoryId.