Files
lvmh/web/src/settings.ts
T

39 lines
1022 B
TypeScript

export interface Settings {
serverUrl: string;
token: string;
}
const STORAGE_KEY: string = "lvmh.settings";
export function getSettings(): Settings | null {
try {
const raw = localStorage.getItem(STORAGE_KEY);
if (raw === null) return null;
const parsed: unknown = JSON.parse(raw);
if (
parsed !== null &&
typeof parsed === "object" &&
typeof (parsed as { serverUrl?: unknown }).serverUrl === "string" &&
typeof (parsed as { token?: unknown }).token === "string"
) {
return parsed as Settings;
}
return null;
} catch {
return null;
}
}
export function saveSettings(settings: Settings): void {
localStorage.setItem(STORAGE_KEY, JSON.stringify(settings));
}
export function clearSettings(): void {
localStorage.removeItem(STORAGE_KEY);
}
export function buildWsUrl(settings: Settings): string {
const base = settings.serverUrl.replace(/\/+$/, "").replace(/^http/, "ws");
return `${base}/ws?token=${encodeURIComponent(settings.token)}`;
}