WebHookEventType 及已解决和分配插件

(非常棒)的变更中,为 solved 插件添加了 webhook,其中 关于 webhook 事件类型的部分功能 被移入了核心代码。

然而,这带来了一些不必要的副作用。

  1. 在未安装 solved 或 assign 插件的实例上,事件类型会显示出来,但缺少翻译,并且(当然)这些事件实际上不可用,尽管它们被显示出来了。

  1. 由于缺少 种子数据,solved 和 assign 插件目前在新的稳定版和测试版安装中处于 损坏 状态。

我最初的想法是请你将种子数据反向移植到稳定版以修复问题 #2,但由于还存在另一个 bug(#1),也许更好的做法是将种子代码保留在插件本身,而仅在核心代码中 预留 ID

长话短说,我认为将以下代码移回 solved 和 assign 插件会更好:

WebHookEventType.seed do |b|
  b.id = WebHookEventType::SOLVED
  b.name = "solved"
end
8 个赞

感谢您提出这个问题。我将研究一下,确保如果插件未安装,它们不会显示在核心中。

7 个赞

太好了,谢谢!
能否请您也解决一下稳定版同样存在损坏的问题?

5 个赞

针对此问题已创建修复方案:

不过关于 #2

我在本地运行稳定版(2.4.1)并使用最新版本的 discourse-assign 和 discourse-solved 插件时,并未发现任何问题。

能否提供一些信息,说明如何复现您遇到的问题?

4 个赞

在稳定版上全新安装并启用最新版本的 solved 插件时,web_hook_event_type 表中将缺少相关 ID,导致 webhook 类型无法显示。

出现此问题的原因是:solved 插件中用于初始化这些 ID 的代码已被移除,而该功能尚未包含在稳定版或测试版中。

之前已安装并使用过旧版 solved 插件的网站,由于已包含初始化数据,因此不会遇到此问题。

因此,复现步骤非常简单:在稳定版上创建一个全新的安装。

在 2.4.1 版本上干净的全新安装并启用 solved 插件:无法使用 webhook。

现在让我们手动执行数据初始化,然后再次查看 webhook 界面,问题将得到解决:

好的,原来“失效”的意思是它根本不显示。

这是有意为之。该功能仅在 2.5 及以上版本中提供。

4 个赞

好的,您完全正确,我为之前的表述不清表示歉意。我混淆了“损坏”和“不可用”这两个概念,而由于这是一个新功能,确实没有任何损坏。

不过,将插件的初始化代码移到核心部分确实感觉有些奇怪。我理解您希望保留这些 ID,但我觉得将初始化逻辑保留在插件中会更加清晰。但这只是我个人的看法 :wink:

3 个赞