/** * [파일 역할] * KIS 설정 화면의 "기억하기" 항목(localStorage) 키와 읽기/쓰기 유틸을 관리합니다. * * [주요 책임] * - 앱키/앱시크릿키/계좌번호의 기억하기 체크 상태 저장 * - 기억하기 값 저장/조회/삭제 * - 로그아웃/세션만료 시 일괄 정리할 키 목록 제공 */ export type KisRememberField = "appKey" | "appSecret" | "accountNo"; const KIS_REMEMBER_ENABLED_KEY_MAP = { appKey: "autotrade-kis-remember-app-key-enabled", appSecret: "autotrade-kis-remember-app-secret-enabled", accountNo: "autotrade-kis-remember-account-no-enabled", } as const; const KIS_REMEMBER_VALUE_KEY_MAP = { appKey: "autotrade-kis-remember-app-key", appSecret: "autotrade-kis-remember-app-secret", accountNo: "autotrade-kis-remember-account-no", } as const; export const KIS_REMEMBER_LOCAL_STORAGE_KEYS = [ ...Object.values(KIS_REMEMBER_ENABLED_KEY_MAP), ...Object.values(KIS_REMEMBER_VALUE_KEY_MAP), ] as const; function getBrowserLocalStorage() { if (typeof window === "undefined") { return null; } return window.localStorage; } function readLocalStorage(key: string) { const storage = getBrowserLocalStorage(); if (!storage) { return ""; } return storage.getItem(key) ?? ""; } function writeLocalStorage(key: string, value: string) { const storage = getBrowserLocalStorage(); if (!storage) { return; } storage.setItem(key, value); } function removeLocalStorage(key: string) { const storage = getBrowserLocalStorage(); if (!storage) { return; } storage.removeItem(key); } export function isKisRememberEnabled(field: KisRememberField) { return readLocalStorage(KIS_REMEMBER_ENABLED_KEY_MAP[field]) === "1"; } export function setKisRememberEnabled(field: KisRememberField, enabled: boolean) { const enabledKey = KIS_REMEMBER_ENABLED_KEY_MAP[field]; if (enabled) { writeLocalStorage(enabledKey, "1"); return; } removeLocalStorage(enabledKey); removeLocalStorage(KIS_REMEMBER_VALUE_KEY_MAP[field]); } export function getRememberedKisValue(field: KisRememberField) { return readLocalStorage(KIS_REMEMBER_VALUE_KEY_MAP[field]); } export function setRememberedKisValue(field: KisRememberField, value: string) { const normalized = value.trim(); const valueKey = KIS_REMEMBER_VALUE_KEY_MAP[field]; if (!normalized) { removeLocalStorage(valueKey); return; } writeLocalStorage(valueKey, normalized); }