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: "",
|
|
|
|
|
};
|
|
|
|
|
}
|