Il fallback per il supporto dell'impostazione del tema `user_in_X` fallisce quando il valore risolto è false

L’ho appena provato, ma credo di aver notato un problema durante i test:
Se un utente non appartiene a nessuno dei gruppi consentiti, il nuovo controllo per user_in_copy_button_allowed_groups non restituisce alcun risultato. Di conseguenza, viene eseguito il codice di fallback per i forum che non supportano ancora user_in_setting, ma questo fallisce:

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

Passaggi per riprodurre il problema:

  1. Installa il componente e aggiungilo al tuo tema
  2. Limita i allowed_groups agli amministratori
  3. Impersona un utente di test non amministratore e controlla la console del browser

Credo che il problema si trovi qui:

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

Questo codice restituisce un valore anticipatamente solo quando il valore è true. Quando è false, viene eseguito il codice di fallback sottostante, che si aspetta che il valore dell’impostazione esista ancora come stringa; tuttavia, nei miei test con il mio componente [1], da cui ho copiato il modello di fallback da copy-post, il valore diventa undefined una volta che il supporto per user_in_X è attivo. Immagino che la correzione consista nel restituire anche false in quel caso, in modo che il fallback venga utilizzato solo quando la chiave user_in_X non esiste affatto (core più vecchio), e non ogni volta che il valore risolto risulta essere false.

La mia ipotesi è corretta, o ci si aspetta ancora che l’impostazione fornisca i gruppi come stringa?


  1. prefilled composer link ↩︎

1 Mi Piace