MCPcopy
hub / github.com/msgbyte/tianji / useWarehouseSessionStorage

Function useWarehouseSessionStorage

src/client/hooks/useWarehouseSessionStorage.ts:32–104  ·  view source on GitHub ↗
(
  workspaceId: string
)

Source from the content-addressed store, hash-verified

30 * Stores messages, chart blocks, and selected database/table scopes
31 */
32export function useWarehouseSessionStorage(
33 workspaceId: string
34): UseWarehouseSessionStorageReturn {
35 const storageKey = `warehouse-chat-${workspaceId}`;
36
37 const [session, setSession] = useLocalStorageState<StoredSession | null>(
38 storageKey,
39 {
40 defaultValue: null,
41 serializer: (value) => JSON.stringify(value),
42 deserializer: (value) => {
43 try {
44 return JSON.parse(value);
45 } catch {
46 return null;
47 }
48 },
49 }
50 );
51
52 const saveSession = useCallback(
53 (data: Partial<Omit<StoredSession, 'updatedAt'>>) => {
54 setSession((prev) => {
55 const currentSession = prev ?? {
56 messages: [],
57 chartBlocks: [],
58 selectedScopes: [],
59 updatedAt: Date.now(),
60 };
61 return {
62 ...currentSession,
63 ...data,
64 updatedAt: Date.now(),
65 };
66 });
67 },
68 [setSession]
69 );
70
71 const saveMessages = useCallback(
72 (messages: UIMessage[]) => {
73 saveSession({ messages });
74 },
75 [saveSession]
76 );
77
78 const saveChartBlocks = useCallback(
79 (chartBlocks: ChartBlock[]) => {
80 saveSession({ chartBlocks });
81 },
82 [saveSession]
83 );
84
85 const saveSelectedScopes = useCallback(
86 (selectedScopes: WarehouseScope[]) => {
87 saveSession({ selectedScopes });
88 },
89 [saveSession]

Callers 1

useWarehouseInsightChatFunction · 0.90

Calls 2

parseMethod · 0.80
nowMethod · 0.80

Tested by

no test coverage detected