Files
auto-trade/features/settings/lib/kis-remember-storage.ts

96 lines
2.4 KiB
TypeScript
Raw Normal View History

2026-03-12 09:26:27 +09:00
/**
* [ ]
* 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);
}