Neon:ryan
Enhance deliverables functionality and UI
dd07b04
Raw
History Blame Contribute Delete
3.4 kB
import React, { useState, useEffect } from 'react';
import { ThemeProvider } from './contexts/ThemeContext';
import { AppConfigProvider } from './contexts/AppConfigContext';
import HomePage from './pages/HomePage';
import ChatPage from './pages/ChatPage';
import AuthPage from './pages/AuthPage';
import CanvasPage from './pages/CanvasPage';
import UserGuide from './components/UserGuide';
import './styles/components.css';
function App() {
const [currentView, setCurrentView] = useState('home');
const [isAuthenticated, setIsAuthenticated] = useState(false);
const [user, setUser] = useState(null);
const [authToken, setAuthToken] = useState(null);
// Check for existing authentication on app start
useEffect(() => {
const token = localStorage.getItem('authToken');
const userData = localStorage.getItem('user');
if (token && userData) {
try {
const parsedUser = JSON.parse(userData);
setAuthToken(token);
setUser(parsedUser);
setIsAuthenticated(true);
setCurrentView('chat');
} catch (error) {
// Clear invalid data
localStorage.removeItem('authToken');
localStorage.removeItem('user');
}
}
}, []);
const navigateToAuth = () => {
setCurrentView('auth');
};
const navigateToCanvas = (canvasView) => {
if (['insights', 'workspace', 'deliverables'].includes(canvasView)) {
localStorage.setItem('canvas-view-v2', canvasView);
}
setCurrentView('canvas');
};
const navigateToChat = () => {
setCurrentView('chat');
};
const navigateToHome = () => {
setCurrentView('home');
};
const handleAuthSuccess = (userData, token) => {
setUser(userData);
setAuthToken(token);
setIsAuthenticated(true);
setCurrentView('chat');
};
const handleSignOut = () => {
localStorage.removeItem('authToken');
localStorage.removeItem('user');
setUser(null);
setAuthToken(null);
setIsAuthenticated(false);
setCurrentView('home');
};
return (
<AppConfigProvider>
<ThemeProvider>
<div className="App">
{currentView === 'home' && (
<HomePage
onNavigateToHome={navigateToHome}
onNavigateToChat={isAuthenticated ? navigateToChat : navigateToAuth}
onNavigateToCanvas={isAuthenticated ? navigateToCanvas : navigateToAuth}
isAuthenticated={isAuthenticated}
/>
)}
{currentView === 'auth' && (
<AuthPage onAuthSuccess={handleAuthSuccess} />
)}
{currentView === 'canvas' && isAuthenticated && (
<CanvasPage
user={user}
authToken={authToken}
onNavigateToHome={navigateToHome}
onNavigateToChat={navigateToChat}
onSignOut={handleSignOut}
/>
)}
{currentView === 'chat' && isAuthenticated && (
<ChatPage
user={user}
authToken={authToken}
onNavigateToHome={navigateToHome}
onNavigateToCanvas={navigateToCanvas}
onSignOut={handleSignOut}
/>
)}
{/* Global help center — listens for the 'open-user-guide' event */}
<UserGuide />
</div>
</ThemeProvider>
</AppConfigProvider>
);
}
export default App;