HINWEIS ZUR ABBESTELLUNG: Das Abrufen der Zeitzone-Eigenschaft des Benutzerobjekts ist veraltet. Verwenden Sie stattdessen das user_option-Objekt

Du erhältst diese Benachrichtigung, wenn du den Benutzer aus dem Store wie folgt lädst:

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

Beim Hydratieren des Benutzers aus dem Store wird offenbar auf die Zeitzone des Benutzers zugegriffen, was diese Benachrichtigung auslöst.

Ich verwende den oben genannten Code, um auf die user_fields des Benutzers zuzugreifen, die beim über api.getCurrentUser() zurückgegebenen Benutzer nicht ausgefüllt sind.

Gibt es eine andere Möglichkeit, die user_fields aus einem Theme oder Theme-Komponente zu erhalten, ohne die oben genannte Konstruktion zu verwenden?

Ich habe einen Weg gefunden, diese Deprecation-Warnung zu umgehen und trotzdem auf user_field zuzugreifen:

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

Allerdings sendet findDetails immer eine Anfrage an den Server. Es wird nichts gecacht. Sobald es aufgerufen wird, werden die user_fields des aktuellen Benutzers befüllt.

Man kann die Logik also ein wenig wie folgt optimieren:


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

withUserFields(api.getCurrentUser(), (user) => {
  // etwas mit user.user_fields[] machen
});