96 lines
2.4 KiB
TypeScript
96 lines
2.4 KiB
TypeScript
|
|
/**
|
||
|
|
* [파일 역할]
|
||
|
|
* 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);
|
||
|
|
}
|
||
|
|
|