УВЕДОМЛЕНИЕ ОБ УСТАРЕВАНИИ: Получение свойства часового пояса объекта пользователя устарело. Используйте вместо этого объект user_option

Вы получите это уведомление, если попытаетесь загрузить пользователя из хранилища (store) следующим образом:

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

Похоже, что при гидратации пользователя из хранилища происходит обращение к полю timezone пользователя, что и вызывает данное уведомление.

Я использую приведённый выше код для доступа к user_fields пользователя, которые не заполнены в объекте пользователя, возвращаемом методом api.getCurrentUser().

Есть ли другой способ получить user_fields из темы или компонента темы без использования вышеуказанного подхода?

Я нашёл способ обойти это предупреждение об устаревании, при этом по-прежнему получая доступ к user_field:

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

Однако findDetails всегда отправляет запрос на сервер. Ничего не кэшируется. После его вызова у текущего пользователя будут заполнены user_fields.

Так что логику можно немного оптимизировать, например так:


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

withUserFields(api.getCurrentUser(), (user) => {
  // сделать что-то с user.user_fields[]
});