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 :
- Installez le composant et ajoutez-le à votre thème
- Limitez les
allowed_groupsaux administrateurs - 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 ?
prefilled composer link ↩︎