비추천 공지: 사용자 객체의 timezone 속성을 가져오는 기능은 비추천되었습니다. 대신 user_option 객체를 사용하세요

사용자를 다음과 같이 스토어에서 로드하려고 하면 이 알림이 표시됩니다.

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

스토어에서 사용자 정보를 수화(hydrate)하는 과정에서 사용자의 타임존(timezone)에 액세스하여 이 알림이 트리거되는 것 같습니다.

위 코드를 사용하여 api.getCurrentUser()가 반환하는 사용자에 채워지지 않은 사용자의 user_fields에 액세스하고 있습니다.

위 구성 없이 테마나 테마 컴포넌트에서 user_fields를 가져올 다른 방법이 있을까요?

이 비추천(deprecation) 알림을 우회하면서 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[]를 사용하여 무언가를 수행
});