diff --git a/frontend/src/hooks/useAppSettings.ts b/frontend/src/hooks/useAppSettings.ts index d26ab11..fe1736c 100644 --- a/frontend/src/hooks/useAppSettings.ts +++ b/frontend/src/hooks/useAppSettings.ts @@ -119,7 +119,9 @@ function ensureLoaded(): Promise { 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 => {