알림목록 obv 그래프 문제 최종수정
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
/**
|
||||
* 워크스페이스 slot0 보조지표 — 알림 미니 차트가 메인 차트 인스턴스 스타일과 맞추도록
|
||||
*/
|
||||
import type { IndicatorConfig } from '../types';
|
||||
import { loadWorkspace } from './backendApi';
|
||||
|
||||
let cached: IndicatorConfig[] | null = null;
|
||||
let loadPromise: Promise<IndicatorConfig[]> | null = null;
|
||||
let loadedSessionKey: number | null = null;
|
||||
|
||||
export function invalidateWorkspaceChartIndicatorsCache(): void {
|
||||
cached = null;
|
||||
loadPromise = null;
|
||||
loadedSessionKey = null;
|
||||
}
|
||||
|
||||
export function ensureWorkspaceChartIndicators(sessionKey = 0): Promise<IndicatorConfig[]> {
|
||||
if (cached !== null && loadedSessionKey === sessionKey) {
|
||||
return Promise.resolve(cached);
|
||||
}
|
||||
if (loadedSessionKey !== sessionKey) {
|
||||
cached = null;
|
||||
loadPromise = null;
|
||||
}
|
||||
if (!loadPromise) {
|
||||
loadPromise = loadWorkspace()
|
||||
.then(ws => {
|
||||
const slot0 = (Array.isArray(ws?.slots) ? ws.slots[0] : null) as
|
||||
| { indicators?: IndicatorConfig[] }
|
||||
| null;
|
||||
cached = Array.isArray(slot0?.indicators) ? slot0!.indicators! : [];
|
||||
loadedSessionKey = sessionKey;
|
||||
loadPromise = null;
|
||||
return cached;
|
||||
})
|
||||
.catch(() => {
|
||||
cached = [];
|
||||
loadedSessionKey = sessionKey;
|
||||
loadPromise = null;
|
||||
return [];
|
||||
});
|
||||
}
|
||||
return loadPromise;
|
||||
}
|
||||
|
||||
export function getWorkspaceChartIndicatorsCache(): IndicatorConfig[] | null {
|
||||
return cached;
|
||||
}
|
||||
Reference in New Issue
Block a user