La solution de repli pour la prise en charge du paramètre de thème `user_in_X` échoue lorsque la valeur résolue est false

J’ai essayé cela, mais je pense avoir remarqué un problème lors des tests :
Si un utilisateur ne fait partie d’aucun des groupes autorisés, la nouvelle vérification de user_in_copy_button_allowed_groups ne renvoie aucun résultat. Ainsi, le code de repli pour les forums qui ne peuvent pas encore gérer user_in_setting est exécuté mais échoue :

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

Étapes pour reproduire :

  1. Installez le composant et ajoutez-le à votre thème
  2. Limitez les allowed_groups aux administrateurs
  3. Incarnez un utilisateur de test non administrateur et vérifiez la console du navigateur

Je pense que le problème se trouve ici :

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

Cela ne retourne précocement que lorsque la valeur est true. Lorsque c’est false, le code de repli ci-dessous est exécuté, qui s’attend à ce que la valeur du paramètre existe toujours sous forme de chaîne de caractères – mais dans mes tests avec mon composant [1] dont j’ai copié le modèle de repli depuis copy-post, la valeur est undefined dès que la prise en charge de user_in_X est active. Je suppose que la correction consiste à renvoyer false dans ce cas également, afin que le repli ne soit utilisé que lorsque la clé user_in_X n’existe pas du tout (noyau ancien), et non chaque fois que la valeur résolue se révèle être false.

Mon hypothèse est-elle correcte, ou est-il toujours attendu que le paramètre fournisse les groupes sous forme de chaîne de caractères ?


  1. prefilled composer link ↩︎

1 « J'aime »