useAppSettings: loadStrategies await 중 cache null 반환 버그 수정
loadStrategies() await 중 invalidateAppSettingsCache() 호출로
_cache가 null로 초기화되면 ensureLoaded()가 null을 반환.
useAppSettings에서 null.displayTimezone 접근으로 TypeError 발생.
- ensureLoaded(): return _cache → return _cache ?? {}
- useAppSettings .then(): data 대신 data ?? {} 사용
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -119,7 +119,9 @@ function ensureLoaded(): Promise<AppSettingsDto> {
|
||||
if (generation === _loadGeneration) {
|
||||
notifyAppSettingsListeners();
|
||||
}
|
||||
return _cache;
|
||||
// loadStrategies() 등 await 중 invalidateAppSettingsCache()가 호출되면
|
||||
// _cache 가 null 로 초기화될 수 있으므로 ?? {} 로 null 반환 방지
|
||||
return _cache ?? {};
|
||||
});
|
||||
return _loadPromise;
|
||||
}
|
||||
@@ -234,11 +236,12 @@ export function useAppSettings(sessionKey = 0) {
|
||||
}
|
||||
|
||||
ensureLoaded().then(data => {
|
||||
const safe = data ?? {};
|
||||
if (mountedRef.current) {
|
||||
setSettings(data);
|
||||
setDisplayTimezone(normalizeTimezone(data.displayTimezone ?? DEFAULT_DISPLAY_TIMEZONE));
|
||||
setChartTimeFormat(normalizeChartTimeFormat(data.chartTimeFormat ?? DEFAULT_CHART_TIME_FORMAT));
|
||||
setTradeAlertTimeFormat(normalizeChartTimeFormat(data.tradeAlertTimeFormat ?? DEFAULT_TRADE_ALERT_TIME_FORMAT));
|
||||
setSettings(safe);
|
||||
setDisplayTimezone(normalizeTimezone(safe.displayTimezone ?? DEFAULT_DISPLAY_TIMEZONE));
|
||||
setChartTimeFormat(normalizeChartTimeFormat(safe.chartTimeFormat ?? DEFAULT_CHART_TIME_FORMAT));
|
||||
setTradeAlertTimeFormat(normalizeChartTimeFormat(safe.tradeAlertTimeFormat ?? DEFAULT_TRADE_ALERT_TIME_FORMAT));
|
||||
setIsLoaded(true);
|
||||
}
|
||||
}).catch(err => {
|
||||
|
||||
Reference in New Issue
Block a user