Files
zk-data-agent/frontend/app/lib/claw-active-session.ts
T
2026-05-12 20:22:50 +08:00

46 lines
1.3 KiB
TypeScript

"use client";
const ACTIVE_SESSION_ID_KEY = "claw.activeSessionId";
export const ACTIVE_SESSION_CHANGED_EVENT = "claw-active-session-changed";
export function readActiveSessionId() {
if (typeof window === "undefined") return null;
return (
normalizeSessionId(window.sessionStorage.getItem(ACTIVE_SESSION_ID_KEY)) ??
normalizeSessionId(window.localStorage.getItem(ACTIVE_SESSION_ID_KEY))
);
}
export function writeActiveSessionId(sessionId: string | null | undefined) {
if (typeof window === "undefined") return;
const normalized = normalizeSessionId(sessionId);
if (!normalized) {
clearActiveSessionId();
return;
}
window.sessionStorage.setItem(ACTIVE_SESSION_ID_KEY, normalized);
window.localStorage.setItem(ACTIVE_SESSION_ID_KEY, normalized);
window.dispatchEvent(
new CustomEvent(ACTIVE_SESSION_CHANGED_EVENT, {
detail: { sessionId: normalized },
}),
);
}
export function clearActiveSessionId() {
if (typeof window === "undefined") return;
window.sessionStorage.removeItem(ACTIVE_SESSION_ID_KEY);
window.localStorage.removeItem(ACTIVE_SESSION_ID_KEY);
window.dispatchEvent(
new CustomEvent(ACTIVE_SESSION_CHANGED_EVENT, {
detail: { sessionId: null },
}),
);
}
function normalizeSessionId(value: unknown) {
if (typeof value !== "string") return null;
const trimmed = value.trim();
return trimmed || null;
}