RAG_Backend / frontend /src /hooks /useSession.js
Madhesh4124's picture
Major Chunking,Retrieval and Ranking Updates
e907a44
Raw
History Blame Contribute Delete
1.88 kB
import { useCallback, useEffect, useState } from "react";
const STORAGE_KEY = "rag_lab_session";
const EMPTY_SESSION = { docId: null, docIds: [], configId: null, filename: null, mode: null };
function loadInitialSession() {
try {
const raw = localStorage.getItem(STORAGE_KEY);
if (!raw) return EMPTY_SESSION;
const parsed = JSON.parse(raw);
return {
docId: parsed?.docId || null,
docIds: Array.isArray(parsed?.docIds) ? parsed.docIds.map((id) => String(id)) : [],
configId: parsed?.configId || null,
filename: parsed?.filename || null,
mode: parsed?.mode || null,
};
} catch {
return EMPTY_SESSION;
}
}
export function useSession() {
const [session, setSession] = useState(loadInitialSession);
useEffect(() => {
localStorage.setItem(STORAGE_KEY, JSON.stringify(session));
}, [session]);
const setDocId = useCallback((docId) => {
setSession((prev) => ({ ...prev, docId }));
}, []);
const setConfigId = useCallback((configId) => {
setSession((prev) => ({ ...prev, configId }));
}, []);
const setDocIds = useCallback((docIds) => {
const normalized = Array.isArray(docIds) ? docIds.map((id) => String(id)) : [];
setSession((prev) => ({ ...prev, docIds: normalized }));
}, []);
const setFilename = useCallback((filename) => {
setSession((prev) => ({ ...prev, filename }));
}, []);
const setMode = useCallback((mode) => {
setSession((prev) => ({ ...prev, mode }));
}, []);
const clear = useCallback(() => {
setSession({ docId: null, docIds: [], configId: null, filename: null, mode: null });
}, []);
return {
docId: session.docId,
docIds: session.docIds,
configId: session.configId,
filename: session.filename,
mode: session.mode,
setDocId,
setDocIds,
setConfigId,
setFilename,
setMode,
clear,
};
}