node-ui / src /App.js
srijan9994's picture
initial commit
0d3ffc3
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;