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