我刚才试了一下,但我在测试时似乎发现了一个问题:
如果用户不属于任何允许的组,新的 user_in_copy_button_allowed_groups 检查不会返回结果。因此,针对尚无法处理 user_in_setting 的论坛的后备代码会被执行,但会失败:
[THEME 254 'Copy post button'] TypeError: Cannot read properties of undefined (reading 'split')
复现步骤:
- 安装该组件并将其添加到你的主题中
- 将 allowed_groups 限制为管理员
- 模拟一个非管理员测试用户,并查看浏览器控制台
我认为问题出在这里:
if (Object.hasOwn(settings, "user_in_copy_button_allowed_groups")) {
if (settings.user_in_copy_button_allowed_groups) {
return true;
}
}
这仅在值为 true 时提前返回。当值为 false 时,会执行下面的后备代码,该代码期望设置值仍然以字符串形式存在——但在我使用我复制自 copy-post 的后备模式的 [1] 组件进行的测试中,一旦启用 user_in_X 支持,它就变成了 undefined。我猜测修复方法是在这种情况下也返回 false,这样只有当 user_in_X 键根本不存在时(旧版核心),才会使用后备代码,而不是在解析后的值恰好为 false 时。
我的假设正确吗,还是说该设置仍然期望以字符串形式提供组?
prefilled composer link ↩︎