import { useState, useEffect } from 'react'; import { Plus, MessageSquare, Trash2, FileText, LogOut, Gavel, ChevronLeft, X } from 'lucide-react'; const logo = "https://huggingface.co/spaces/JenishMakwana/RAG/resolve/main/frontend-react/public/logo.png"; import { fetchDocuments, deleteDocument, fetchChatSessions, deleteChatSession } from '../api'; export default function Sidebar({ token, email, onLogout, onNewChat, onSelectSession, setIsUploading, currentSessionId, refreshSessions, isCollapsed, setIsCollapsed, currentView, onViewLibrary, sessionDocuments }) { const [sessions, setSessions] = useState([]); const [isProfileExpanded, setIsProfileExpanded] = useState(false); const [error, setError] = useState(''); const loadData = async () => { try { const sessionsData = await fetchChatSessions(token); setSessions(sessionsData.sessions); } catch (err) { setError('Failed to load data'); if (err.status === 401 && onLogout) { onLogout(); } } }; useEffect(() => { if (token) loadData(); }, [token, refreshSessions]); const handleDeleteSession = async (e, sessionId) => { e.stopPropagation(); if (!confirm(`Delete this chat session?`)) return; try { await deleteChatSession(token, sessionId); if (sessionId === currentSessionId) { onNewChat(); } loadData(); } catch (err) { alert(err.message); if (err.status === 401 && onLogout) { onLogout(); } } }; return ( ); }