Разработка плагинов — лучший способ получить данные для модели и перерисовать виджет?

Всем привет!

Я в процессе разработки плагина, который пытается загружать страницы, на которые есть вики-ссылки в виде связанных ссылок.

У меня уже работает базовая реализация, но мне не нравится текущий дизайн, и я хотел бы узнать, не упустил ли я какие-либо API, которые могли бы сделать этот процесс более плавным.

Вот мой текущий подход: discourse-wikilinks/assets/javascripts/initializers/wikilinks-init.js at main · dvargas92495/discourse-wikilinks · GitHub

Кратко:

  • использую api.reopenWidget для виджета post-links, чтобы переопределить метод html.
  • при первом рендеринге виджета запрашиваю заголовок темы, а затем ищу темы, в заголовке которых есть [[title]].
  • после получения ответа планирую повторный рендеринг с данными ответа, используя флаг, чтобы избежать бесконечной загрузки при следующем рендеринге.

Этот подход неоптимален, потому что:

  • между первоначальным рендерингом и отображением остальных данных возникает задержка.
  • флаг, предотвращающий бесконечную загрузку, кажется подверженным ошибкам в будущем.
  • мне приходится делать два API-запроса: один для получения заголовка темы (который, вероятно, доступен выше в дереве виджетов), а другой — для ссылок.
  • мне приходится копировать и вставлять оригинальный метод html виджета в код своего плагина, что делает его уязвимым для форков.

Есть ли какие-то идеи, как смягчить эти проблемы? В идеале я хотел бы изменить исходный вызов loadTopicView, чтобы включить вики-ссылки.

Также, предоставляет ли Discourse или кто-либо из сообщества консультации по звонкам? Я бы с радостью оплатил звонок с экспертом, чтобы глубоко разобраться в архитектуре Discourse и узнать, какие плагины доступны. Я уже ознакомился с большей частью документации по разработке и довольно много перемещался по кодовой базе.