사용자를 다음과 같이 스토어에서 로드하려고 하면 이 알림이 표시됩니다.
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[]를 사용하여 무언가를 수행
});