Olá a todos!
Estou desenvolvendo um plugin que tenta carregar páginas que são wikilink’d como referências vinculadas.
Tenho uma implementação básica funcionando, mas não gosto de como o design está atualmente e queria ver se há APIs que estou perdendo que ajudariam a tornar isso mais suave.
Aqui está minha abordagem atual: discourse-wikilinks/assets/javascripts/initializers/wikilinks-init.js at main · dvargas92495/discourse-wikilinks · GitHub
Tl;dr:
- usar
api.reopenWidgetno widgetpost-linkspara substituir o métodohtml. - na primeira renderização do widget, buscar o título do tópico e, em seguida, pesquisar tópicos que tenham [[título]] em seu título.
- Após a busca, agendar uma nova renderização com os dados da resposta, usando uma flag para garantir que não busquemos infinitamente na próxima renderização.
Essa abordagem é subótima porque:
- Há um atraso entre a renderização inicial e quando o restante dos dados é renderizado.
- A flag que impede a busca infinita parece propensa a erros no futuro.
- Preciso fazer duas chamadas de API, uma para buscar o título do tópico (que deve estar disponível mais acima na árvore de widgets) e outra para os links.
- Tenho que copiar e colar o método original do widget
htmlno código do meu plugin, o que o deixa vulnerável a ser forkado.
Alguma ideia de como mitigar esses problemas? Idealmente, eu gostaria de editar a chamada original loadTopicView para incluir os wikilinks.
Além disso, o Discourse ou alguém da comunidade oferece chamadas de consultoria? Eu adoraria pagar por uma chamada com um especialista para me dar um mergulho profundo em tudo o que há para saber sobre como o Discourse é arquitetado e quais plugins estão disponíveis. Já passei pela maioria dos documentos de desenvolvimento e explorei bastante o código-fonte.