非推奨通知: ユーザーオブジェクトのタイムゾーンプロパティを取得することは非推奨です。代わりに user_option オブジェクトを使用してください

ユーザーをこのようにストアから読み込もうとすると、この通知が表示されます。

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

ストアからユーザーを水増し(Hydrating)すると、ユーザーのタイムゾーンにアクセスするようになり、その結果としてこの通知がトリガーされるようです。

上記のコードを使用して、api.getCurrentUser() が返すユーザーには設定されていない user_fields にアクセスしています。

上記のような構成を使わずに、テーマやテーマコンポーネントから 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[] を使って何かを行う
});