File size: 2,081 Bytes
11f4e50
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import { Routes, Route, Navigate } from 'react-router-dom';
import { useSelector } from 'react-redux';
import { RootState } from './store';
import { useAgentOrchestrator } from './hooks/useAgentOrchestrator';
import Navbar from './components/Navbar';
import Landing from './pages/Landing';
import Login from './pages/Login';
import Register from './pages/Register';
import Dashboard from './pages/Dashboard';
import ProjectPage from './pages/ProjectPage';
import VideoCreate from './pages/VideoCreate';
import Preview from './pages/Preview';
import Privacy from './pages/Privacy';
import Terms from './pages/Terms';

function ProtectedRoute({ children }: { children: React.ReactNode }) {
    const { token } = useSelector((state: RootState) => state.auth);
    if (!token) return <Navigate to="/login" replace />;
    return <>{children}</>;
}

export default function App() {
    // Listen to operations coming from the AI Agent connecting to our MCP Host
    useAgentOrchestrator();

    return (
        <div className="min-h-screen bg-dark-900">

            <Navbar />

            <Routes>

                <Route path="/" element={<Landing />} />

                <Route path="/login" element={<Login />} />

                <Route path="/register" element={<Register />} />

                <Route path="/privacy" element={<Privacy />} />

                <Route path="/terms" element={<Terms />} />

                <Route path="/dashboard" element={

                    <ProtectedRoute><Dashboard /></ProtectedRoute>

                } />

                <Route path="/project/:id" element={

                    <ProtectedRoute><ProjectPage /></ProtectedRoute>

                } />

                <Route path="/project/:projectId/create" element={

                    <ProtectedRoute><VideoCreate /></ProtectedRoute>

                } />

                <Route path="/video/:id/preview" element={

                    <ProtectedRoute><Preview /></ProtectedRoute>

                } />

            </Routes>

        </div>
    );
}