Então me deparei com a ideia de permitir que aqueles com permissões de edição de posts (usuários TL4+) pudessem selecionar texto e converter essa parte em um bloco de código.
Depois de referenciar algumas partes do código do plugin Discourse AI e olhar quais dados são passados para o outlet do plugin que estou usando, cheguei ao código para obter o texto selecionado e envolvê-lo com cercas de código, usando o outlet quote-share-buttons-before.
Então, agora, estou meio que preso. O plugin checklist (de alguma forma) faz isso com um argumento na função checklistSyntax chamado postDecorator, que eles podem então obter o modelo (acho que é o modelo post?) usando .getModel(). Como isso é passado, eu não sei, mas acho que não está disponível para mim na minha configuração?
Se for realmente o modelo de post usado no plugin checklist, pareço ter dificuldade em encontrar onde a simples função ‘save’ usada em
await postModel.save({
raw: newRaw,
edit_reason: i18n("checklist.edit_reason"),
});
existe em models/post.js, a menos que eu esteja entendendo errado.
Atualmente estou usando this.args.outletArgs.data.editPost(this.post) (que, se bem me lembro, está em models/topic.js, mas por favor, me corrija se eu estiver errado) que apenas abre o composer para editar o post, não apenas editá-lo diretamente.
Então, minha pergunta é: como posso editar o post como o plugin checklist, sem complicações? Existe uma maneira de fazer isso se eu estiver colocando um botão em um outlet em vez de api.decorateCookedElement como o checklist faz? Preferencialmente sem usar a API REST?
Meu repositório:
Obrigado!