import { useState, useEffect, useCallback } from 'react'; import Auth from './components/Auth'; import Sidebar from './components/Sidebar'; import ChatWindow from './components/ChatWindow'; import DocsLibrary from './components/DocsLibrary'; import { PanelLeftOpen, PanelLeftClose } from 'lucide-react'; import './App.css'; const generateId = () => { try { return (typeof crypto !== 'undefined' && crypto.randomUUID) ? crypto.randomUUID() : Math.random().toString(36).substring(2, 15); } catch (e) { return Math.random().toString(36).substring(2, 15); } }; function App() { const [token, setToken] = useState(localStorage.getItem('rag_token') || ''); const [email, setEmail] = useState(localStorage.getItem('rag_email') || ''); const [messages, setMessages] = useState([]); const [isUploading, setIsUploading] = useState(false); const [currentSessionId, setCurrentSessionId] = useState(generateId()); const [currentView, setCurrentView] = useState('chat'); const [sessionDocuments, setSessionDocuments] = useState([]); const [refreshSessions, setRefreshSessions] = useState(0); const [isSidebarCollapsed, setIsSidebarCollapsed] = useState(false); const handleLoginSuccess = useCallback((newToken, newEmail) => { setToken(newToken); setEmail(newEmail); localStorage.setItem('rag_token', newToken); localStorage.setItem('rag_email', newEmail); }, []); const handleLogout = useCallback(() => { setToken(''); setEmail(''); setMessages([]); setSessionDocuments([]); setCurrentView('chat'); localStorage.removeItem('rag_token'); localStorage.removeItem('rag_email'); }, []); const handleNewChat = useCallback(() => { setCurrentSessionId(generateId()); setMessages([]); setSessionDocuments([]); setCurrentView('chat'); if (window.innerWidth <= 768) setIsSidebarCollapsed(true); }, []); const handleSelectSession = useCallback((sessionId) => { setCurrentSessionId(sessionId); setCurrentView('chat'); if (window.innerWidth <= 768) setIsSidebarCollapsed(true); }, []); const handleViewLibrary = useCallback(() => { setCurrentView('library'); if (window.innerWidth <= 768) setIsSidebarCollapsed(true); }, []); const handleRefreshSessions = useCallback(() => { setRefreshSessions(prev => prev + 1); }, []); if (!token) { return ; } return ( <>
{!isSidebarCollapsed && (
setIsSidebarCollapsed(true)} /> )} {currentView === 'library' ? (

Management Library

) : ( )}
); } export default App;