Files
charles/frontend/src/App.jsx
T

38 lines
1.1 KiB
React

import { useState } from 'react'
import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom'
import Login from './components/Login'
import Layout from './components/Layout'
import Dashboard from './components/Dashboard'
function App() {
const [token, setToken] = useState(localStorage.getItem('charles_token'))
const [user, setUser] = useState(() => { try { return JSON.parse(localStorage.getItem('charles_user')) } catch { return null } })
const handleLogin = (t, u) => {
localStorage.setItem('charles_token', t)
localStorage.setItem('charles_user', JSON.stringify(u))
setToken(t)
setUser(u)
}
const handleLogout = () => {
localStorage.removeItem('charles_token')
localStorage.removeItem('charles_user')
setToken(null)
setUser(null)
}
if (!token) return <Login onLogin={handleLogin} />
return (
<BrowserRouter>
<Layout user={user} onLogout={handleLogout}>
<Routes>
<Route path='/' element={<Dashboard token={token} user={user} />} />
<Route path='*' element={<Navigate to='/' />} />
</Routes>
</Layout>
</BrowserRouter>
)
}
export default App