AVISO DE DESCONTINUAÇÃO: Obter a propriedade de fuso horário do objeto de usuário está descontinuado. Use o objeto user_option em vez disso

Você receberá este aviso ao tentar carregar o usuário do store da seguinte forma:

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

Ao hidratar o usuário a partir do store, aparentemente o fuso horário do usuário é acessado, o que dispara este aviso.

Uso o código acima para acessar os user_fields do usuário, que não estão preenchidos no usuário retornado por api.getCurrentUser().

Existe uma maneira diferente de obter os user_fields de um tema ou componente de tema sem usar a construção acima?

Encontrei uma forma de contornar esse aviso de depreciação e ainda assim ter acesso ao user_field:

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

No entanto, findDetails sempre enviará uma requisição ao servidor. Nada é armazenado em cache. Assim que for chamado, o usuário atual terá user_fields preenchidos.

Então, você pode otimizar a lógica um pouco assim:


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

withUserFields(api.getCurrentUser(), (user) => {
  // faça algo com user.user_fields[]
});