插件开发 - 获取模型数据并重新渲染小部件的更好方法?

大家好!

我正在开发一个插件,尝试将 wikilink 加载为链接引用。

我已经有了一个基本实现,但不喜欢目前的设计,想看看是否有我遗漏的 API 可以让这个过程更顺畅。

这是我目前的方法:discourse-wikilinks/assets/javascripts/initializers/wikilinks-init.js at main · dvargas92495/discourse-wikilinks · GitHub

简而言之:

  • post-links widget 上使用 api.reopenWidget 来覆盖 html 方法。
  • 在 widget 的 第一次 渲染时,获取 topic 标题,然后搜索标题中包含 [[title]] 的 topic。
  • 获取数据后,安排一次带有响应数据的重新渲染,并使用一个标志来确保我们不会在下一次渲染时无限获取。

这种方法不理想,因为:

  • 初始渲染和其余数据渲染之间存在延迟。
  • 防止无限获取的标志似乎容易出错。
  • 我需要进行两次 API 调用,一次获取 topic 标题(应该在 widget 树的更高层级可用),另一次获取链接。
  • 我必须在我的插件代码中复制粘贴原始的 html widget 方法,这使得它容易被 fork。

有什么方法可以缓解这些问题吗?理想情况下,我想编辑原始的 loadTopicView 调用以包含 wikilinks。

另外,Discourse 或社区是否提供咨询服务?我很乐意付费与专家进行一次通话,深入了解 Discourse 的架构以及可用的插件。我已经阅读了大部分开发文档,并且在代码库中进行了大量的跳转。