返回 DeepSeek-Reasonix
composerDraftKey.ts
根目录 / desktop / frontend / src / lib / composerDraftKey.ts
1 import { sessionIdentityStableKey, type SessionIdentityRef } from "./sessionIdentity";
2
3 type ComposerDraftKeyTab = {
4 id?: string;
5 scope?: string;
6 workspaceRoot?: string;
7 topicId?: string;
8 session?: SessionIdentityRef | null;
9 sessionPath?: string;
10 sessionGeneration?: number;
11 };
12
13 export function composerDraftKeyForTab(activeTab: ComposerDraftKeyTab | undefined, activeTabId?: string | null): string {
14 if (!activeTab) return activeTabId ?? "";
15 const scope = activeTab.scope === "project" ? "project" : "global";
16 const workspaceRoot = scope === "project" ? activeTab.workspaceRoot || "" : "";
17 const topicId = activeTab.topicId || "";
18 const sessionPath = activeTab.sessionPath || "";
19 if (activeTab.session?.sessionId) {
20 return sessionIdentityStableKey(activeTab);
21 }
22 if (topicId) {
23 return ["session-topic", scope, workspaceRoot, topicId].join("\u0000");
24 }
25 if (sessionPath) {
26 return ["session-path", scope, workspaceRoot, sessionPath].join("\u0000");
27 }
28 return ["tab", activeTab.id || activeTabId || ""].join("\u0000");
29 }
30
30 lines TYPESCRIPT