AVVISO DI DEPRECATION: L'accesso alla proprietà di fuso orario dell'oggetto utente è deprecato. Utilizzare l'oggetto user_option al suo posto

Riceverai questo avviso quando provi a caricare l’utente dallo store in questo modo

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

L’idratazione dell’utente dallo store sembra accedere al fuso orario dell’utente, attivando questo avviso.

Utilizzo il codice sopra per accedere ai user_fields dell’utente, che non sono popolati nell’utente restituito da api.getCurrentUser().

Esiste un modo diverso per ottenere i user_fields da un tema o da un componente del tema senza la costruzione sopra indicata?

Ho trovato un modo per aggirare l’avviso di deprecazione e continuare ad accedere a user_field:

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

Tuttavia, findDetails invierà sempre una richiesta al server. Non viene utilizzata alcuna cache. Una volta chiamato, l’utente corrente avrà i user_fields popolati.

Quindi, puoi ottimizzare la logica in modo simile a questo:


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

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