AVERTISSEMENT DE NON-RECOMMANDATION : l'accès à la propriété de fuseau horaire de l'objet utilisateur est déprécié. Utilisez l'objet user_option à la place

Vous recevrez cet avertissement lorsque vous tentez de charger l’utilisateur depuis le store de la manière suivante

api.container.lookup('service:store').find('user', api.getCurrentUser().username).then((user) => {
});

L’hydratation de l’utilisateur depuis le store accède apparemment au fuseau horaire de l’utilisateur, ce qui déclenche cet avertissement.

J’utilise le code ci-dessus pour accéder aux user_fields de l’utilisateur, qui ne sont pas renseignés sur l’utilisateur retourné par api.getCurrentUser().

Existe-t-il une autre manière d’obtenir les user_fields depuis un thème ou un composant de thème sans recourir à la construction ci-dessus ?

J’ai trouvé un moyen de contourner ce message de non-recommandation et d’accéder tout de même à user_field :

api.getCurrentUser().findDetails().then((user) => { ... });

Cependant, findDetails enverra toujours une requête au serveur. Rien n’est mis en cache. Une fois la méthode appelée, l’utilisateur actuel aura des user_fields renseignés.

Vous pouvez donc optimiser un peu la logique comme suit :


function withUserFields(user, callback) {
  if (user.user_fields === undefined) {
    user.findDetails().then(callback);
  } else {
    callback(user);
  }
}

withUserFields(api.getCurrentUser(), (user) => {
  // faire quelque chose avec user.user_fields[]
});