39 lines
1022 B
TypeScript
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)}`;
|
|
}
|