전체적인 리팩토링

This commit is contained in:
2026-03-12 09:26:27 +09:00
parent 406af7408a
commit e51d767878
97 changed files with 13651 additions and 363 deletions

View File

@@ -0,0 +1,95 @@
/**
* [파일 역할]
* 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);
}