import { useCallback, useState } from 'react'; export function useSessionProtection() { const [activeSessions, setActiveSessions] = useState>(new Set()); const [processingSessions, setProcessingSessions] = useState>(new Set()); const markSessionAsActive = useCallback((sessionId?: string | null) => { if (!sessionId) { return; } setActiveSessions((prev) => new Set([...prev, sessionId])); }, []); const markSessionAsInactive = useCallback((sessionId?: string | null) => { if (!sessionId) { return; } setActiveSessions((prev) => { const next = new Set(prev); next.delete(sessionId); return next; }); }, []); const markSessionAsProcessing = useCallback((sessionId?: string | null) => { if (!sessionId) { return; } setProcessingSessions((prev) => new Set([...prev, sessionId])); }, []); const markSessionAsNotProcessing = useCallback((sessionId?: string | null) => { if (!sessionId) { return; } setProcessingSessions((prev) => { const next = new Set(prev); next.delete(sessionId); return next; }); }, []); return { activeSessions, processingSessions, markSessionAsActive, markSessionAsInactive, markSessionAsProcessing, markSessionAsNotProcessing, }; }