AVISO DE OBSOLESCENCIA: Obtener la propiedad de zona horaria del objeto de usuario está obsoleto. Use el objeto user_option en su lugar

Recibirás este aviso cuando intentes cargar el usuario desde el almacén de la siguiente manera:

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

Al hidratar el usuario desde el almacén, aparentemente se accede a la zona horaria del usuario, lo que provoca este aviso.

Utilizo el código anterior para acceder a los user_fields del usuario, los cuales no están poblados en el usuario devuelto por api.getCurrentUser().

¿Existe otra forma de obtener los user_fields desde un tema o un componente de tema sin utilizar la construcción anterior?

Encontré una forma de evitar este aviso de obsolescencia y, al mismo tiempo, seguir teniendo acceso a user_field:

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

Sin embargo, findDetails siempre enviará una solicitud al servidor. No se guarda nada en caché. Una vez que se llama, el usuario actual tendrá user_fields poblados.

Así que puedes optimizar un poco la lógica de la siguiente manera:


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

withUserFields(api.getCurrentUser(), (user) => {
  // hacer algo con user.user_fields[]
});