Резервный вариант для поддержки параметра темы `user_in_X` не работает, если разрешённое значение равно false

Я только что попробовал это, но, думаю, заметил проблему во время тестирования:
Если пользователь не входит ни в одну из разрешённых групп, новая проверка user_in_copy_button_allowed_groups не возвращает результат. Таким образом, выполняется код-заглушка для форумов, которые пока не могут обрабатывать user_in_setting, но он завершается с ошибкой:

[THEME 254 'Copy post button'] TypeError: Cannot read properties of undefined (reading 'split')

Шаги для воспроизведения:

  1. Установите компонент и добавьте его в вашу тему.
  2. Ограничьте allowed_groups только администраторами.
  3. Выйдите под учётной записью тестового пользователя, не являющегося администратором, и проверьте консоль браузера.

Думаю, проблема здесь:

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.

Моё предположение верно, или ожидается, что настройка по-прежнему будет предоставлять группы в виде строки?


  1. prefilled composer link ↩︎

1 лайк