Я только что попробовал это, но, думаю, заметил проблему во время тестирования:
Если пользователь не входит ни в одну из разрешённых групп, новая проверка 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, выполняется код-заглушка ниже, который ожидает, что значение настройки всё ещё существует в виде строки. Однако в моих тестах с моим компонентом [1], откуда я скопировал шаблон кода-заглушки из copy-post, оно становится undefined, как только включается поддержка user_in_X. Я предполагаю, что исправление заключается в том, чтобы в этом случае также возвращать false, чтобы код-заглушка использовался только тогда, когда ключ user_in_X вообще отсутствует (старое ядро), а не всякий раз, когда результирующее значение оказывается равным false.
Моё предположение верно, или ожидается, что настройка по-прежнему будет предоставлять группы в виде строки?
prefilled composer link ↩︎