Files
nanobot/webui/src/lib/temporary-chat.ts
T

28 lines
879 B
TypeScript
Raw Normal View History

2026-08-05 19:24:41 +08:00
import type { ChatSummary } from "./types";
export const TEMPORARY_CHAT_ID_PREFIX = "temporary-";
2026-08-06 18:29:04 +08:00
const WEBSOCKET_SESSION_KEY_PREFIX = "websocket:";
2026-08-05 19:24:41 +08:00
export function isTemporaryChatId(value: string): boolean {
return value.startsWith(TEMPORARY_CHAT_ID_PREFIX);
}
2026-08-06 18:29:04 +08:00
export function temporaryChatIdFromSessionKey(value: string | null): string | null {
if (!value?.startsWith(WEBSOCKET_SESSION_KEY_PREFIX)) return null;
const chatId = value.slice(WEBSOCKET_SESSION_KEY_PREFIX.length);
return isTemporaryChatId(chatId) ? chatId : null;
}
2026-08-05 19:24:41 +08:00
export function createTemporaryChatSession(): ChatSummary {
const chatId = `${TEMPORARY_CHAT_ID_PREFIX}${crypto.randomUUID()}`;
const now = new Date().toISOString();
return {
2026-08-06 18:29:04 +08:00
key: `${WEBSOCKET_SESSION_KEY_PREFIX}${chatId}`,
2026-08-05 19:24:41 +08:00
channel: "websocket",
chatId,
createdAt: now,
updatedAt: now,
preview: "",
};
}