O fallback para suporte à configuração de tema `user_in_X` falha quando o valor resolvido é falso

Acabei de tentar isso, mas acho que notei um problema durante os testes:
Se um usuário não estiver em nenhum dos grupos permitidos, a nova verificação para user_in_copy_button_allowed_groups não retorna um resultado. Portanto, o código de fallback para fóruns que ainda não podem lidar com user_in_setting é executado, mas falha:

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

Passos para reproduzir:

  1. Instale o componente e adicione-o ao seu tema
  2. Limite os allowed_groups a administradores
  3. Use a função “Impersonate” em um usuário de teste não administrador e verifique o console do navegador

Acho que o problema está aqui:

if (Object.hasOwn(settings, "user_in_copy_button_allowed_groups")) {
    if (settings.user_in_copy_button_allowed_groups) {
      return true;
    }
  }

Isso retorna precocemente apenas quando o valor é true. Quando é false, o código de fallback abaixo é executado, o que espera que o valor da configuração ainda exista como uma string - mas nos meus testes com meu componente [1], onde copiei o padrão de fallback do copy-post, ele é undefined uma vez que o suporte user_in_X está ativo. Acho que a correção é retornar false nesse caso também, para que o fallback seja usado apenas quando a chave user_in_X não existir totalmente (core mais antigo), e não sempre que o valor resolvido acabar sendo false.

Minha suposição está correta, ou ainda se espera que a configuração forneça os grupos como uma string?


  1. prefilled composer link ↩︎

1 curtida