mobile download

This commit is contained in:
Macbook
2026-05-28 14:44:19 +09:00
parent e2816b037f
commit 3503ef33f5
152 changed files with 11021 additions and 687 deletions
@@ -1,4 +1,5 @@
/** 지표 추가 팝업 — 사용자 정의 탭 (localStorage) */
/** 지표 추가 팝업 — 사용자 정의 탭 (DB) */
import { getUiPreferences, patchUiPreferences } from './uiPreferencesDb';
export interface IndicatorCustomTab {
id: string;
@@ -7,33 +8,16 @@ export interface IndicatorCustomTab {
indicatorTypes: string[];
}
const STORAGE_KEY = 'gc-indicator-custom-tabs-v1';
function newId(): string {
return `tab-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 7)}`;
}
export function loadCustomTabs(): IndicatorCustomTab[] {
try {
const raw = localStorage.getItem(STORAGE_KEY);
if (!raw) return [];
const arr = JSON.parse(raw) as unknown;
if (!Array.isArray(arr)) return [];
return arr.filter(
(t): t is IndicatorCustomTab =>
t != null
&& typeof t === 'object'
&& typeof (t as IndicatorCustomTab).id === 'string'
&& typeof (t as IndicatorCustomTab).name === 'string'
&& Array.isArray((t as IndicatorCustomTab).indicatorTypes),
);
} catch {
return [];
}
return getUiPreferences().indicator?.customTabs ?? [];
}
export function saveCustomTabs(tabs: IndicatorCustomTab[]): void {
localStorage.setItem(STORAGE_KEY, JSON.stringify(tabs));
patchUiPreferences({ indicator: { customTabs: tabs } });
window.dispatchEvent(new CustomEvent('gc-indicator-custom-tabs-changed'));
}