65 lines
1.9 KiB
TypeScript
65 lines
1.9 KiB
TypeScript
import { lazy, Suspense } from 'react'
|
|
import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom'
|
|
import { AuthProvider } from './contexts/AuthContext'
|
|
import { ProtectedRoute } from './components/ProtectedRoute'
|
|
import { useSwipeNav } from './hooks/useSwipeNav'
|
|
import './App.css'
|
|
|
|
function SwipeNavHandler() {
|
|
useSwipeNav()
|
|
return null
|
|
}
|
|
|
|
const HomePage = lazy(() => import('./pages/HomePage'))
|
|
const HistoryPage = lazy(() => import('./pages/HistoryPage'))
|
|
const SettingsPage = lazy(() => import('./pages/SettingsPage'))
|
|
const LoginPage = lazy(() => import('./pages/LoginPage'))
|
|
const PrivacyPage = lazy(() => import('./pages/PrivacyPage'))
|
|
const AboutPage = lazy(() => import('./pages/AboutPage'))
|
|
const TermsOfServicePage = lazy(() => import('./pages/TermsOfServicePage'))
|
|
|
|
function App() {
|
|
return (
|
|
<AuthProvider>
|
|
<BrowserRouter>
|
|
<SwipeNavHandler />
|
|
<Suspense fallback={null}>
|
|
<Routes>
|
|
<Route path="/" element={<LoginPage />} />
|
|
<Route
|
|
path="/write"
|
|
element={
|
|
<ProtectedRoute>
|
|
<HomePage />
|
|
</ProtectedRoute>
|
|
}
|
|
/>
|
|
<Route
|
|
path="/history"
|
|
element={
|
|
<ProtectedRoute>
|
|
<HistoryPage />
|
|
</ProtectedRoute>
|
|
}
|
|
/>
|
|
<Route
|
|
path="/settings"
|
|
element={
|
|
<ProtectedRoute>
|
|
<SettingsPage />
|
|
</ProtectedRoute>
|
|
}
|
|
/>
|
|
<Route path="/privacy" element={<PrivacyPage />} />
|
|
<Route path="/about" element={<AboutPage />} />
|
|
<Route path="/termsofservice" element={<TermsOfServicePage />} />
|
|
<Route path="*" element={<Navigate to="/" replace />} />
|
|
</Routes>
|
|
</Suspense>
|
|
</BrowserRouter>
|
|
</AuthProvider>
|
|
)
|
|
}
|
|
|
|
export default App
|