Estou migrando para longe da api.modifyClass("model:composer", ...) obsoleta.
A minha substituição atual de Composer#save altera condicionalmente o comportamento de salvamento, mas, caso contrário, precisa chamar super.save(opts).
Vejo as novas APIs addModelMethod / addModelCallback, mas não consigo encontrar um exemplo no núcleo do uso de addModelMethod para substituir um método existente mantendo o acesso à implementação original.
addModelMethod é destinado a substituir métodos de modelo existentes dessa forma? Se for, como um plugin deve delegar para a implementação original de save()?
Ou há outro ponto de extensão que deve ser usado para este caso de uso do Composer?
Obrigado! Já estou usando composer-service-cannot-submit-post — ele cuida da verificação em nível de serviço. Mas o save() do modelo do compositor também verifica cantSubmitPost, que inclui missingReplyCharacters > 0, então um corpo vazio ainda é bloqueado ali.
onAppEvent("post:created") é tarde demais porque a postagem nunca é criada, e serializeOnCreate apenas adiciona campos à solicitação, então não ajuda com a validação do comprimento do corpo.
Então, o problema restante é contornar missingReplyCharacters / cantSubmitPost para a primeira postagem. Existe um ponto de extensão suportado para isso?
A melhor solução seria adicionar um novo hook ao núcleo do Discourse que permita alcançar o que você precisa de uma forma suportada. Que tal algo como este:
Obrigado, David! Testei o transformador composer-minimum-post-length e ele funciona — tópicos com corpos vazios são criados com sucesso.
Uma coisa que notei: o editor ainda exibe “Post can’t be empty”, porque a validation em composer-editor tem uma verificação replyLength < 1 fixa que não usa minimumPostLength.
Essa verificação também poderia respeitar o transformador, ou ser ignorada quando minimumPostLength é 0?