Spaces:
Sleeping
Sleeping
| import React, { useState, useEffect } from "react"; | |
| import ChatPanel from "./components/ChatPanel"; | |
| import ChatBox from "./components/ChatBox"; | |
| import Header from "./components/Header"; | |
| import GoogleLoginPage from "./pages/GoogleLoginPage"; | |
| import { BrowserRouter as Router, Routes, Route, Navigate } from "react-router-dom"; | |
| const App = () => { | |
| const [threads, setThreads] = useState([]); | |
| const [activeThread, setActiveThread] = useState(null); | |
| const [user, setUser] = useState(null); | |
| useEffect(() => { | |
| // Check if user is already logged in | |
| const storedUser = localStorage.getItem("user"); | |
| if (storedUser) { | |
| setUser(JSON.parse(storedUser)); | |
| } | |
| }, []); | |
| const createNewThread = () => { | |
| const newThreadId = `thread-${Date.now()}`; | |
| setThreads([...threads, newThreadId]); | |
| setActiveThread(newThreadId); | |
| }; | |
| const handleLogout = () => { | |
| setUser(null); | |
| localStorage.removeItem("user"); | |
| }; | |
| return ( | |
| <Router> | |
| <div | |
| style={{ | |
| height: "100vh", | |
| display: "flex", | |
| flexDirection: "column", | |
| backgroundColor: "#1e1e1e", // Dark background | |
| color: "#f5f5f5", // Light text | |
| }} | |
| > | |
| {user && <Header user={user} onLogout={handleLogout} />} | |
| <Routes> | |
| <Route | |
| path="/login" | |
| element={<GoogleLoginPage setUser={setUser} />} | |
| /> | |
| <Route | |
| path="/" | |
| element={ | |
| user ? ( | |
| <div style={{ display: "flex", flex: 1 }}> | |
| <ChatPanel | |
| threads={threads} | |
| activeThread={activeThread} | |
| setActiveThread={setActiveThread} | |
| createNewThread={createNewThread} | |
| /> | |
| {activeThread && <ChatBox activeThread={activeThread} />} | |
| </div> | |
| ) : ( | |
| <Navigate to="/login" /> | |
| ) | |
| } | |
| /> | |
| </Routes> | |
| </div> | |
| </Router> | |
| ); | |
| }; | |
| export default App; | |