You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.4 KiB
TypeScript
44 lines
1.4 KiB
TypeScript
import { useEffect } from "react"
|
|
import RequireAuth from "./components/Auth/RequireAuth"
|
|
import OnlyUnauthorized from "./components/Auth/OnlyUnauthorized"
|
|
import IndexPage from "./pages/IndexPage"
|
|
import LoginForm from "./components/LoginForm"
|
|
import RegisterForm from "./components/RegisterForm"
|
|
import { BrowserRouter, Routes, Route } from 'react-router-dom'
|
|
import { checkAuth, userSlice } from "./store/reducers/UserSlice";
|
|
import { useAppDispatch, useAppSelector } from "./hooks/redux"
|
|
|
|
|
|
function App() {
|
|
const {isLoading} = useAppSelector(state => state.UserSlice);
|
|
const {storeLoad} = userSlice.actions
|
|
const dispatch = useAppDispatch();
|
|
|
|
useEffect(()=>{
|
|
const CheckLogin = async () => {
|
|
if(localStorage.getItem('token')) {
|
|
await dispatch(checkAuth());
|
|
} else {
|
|
dispatch(storeLoad());
|
|
}
|
|
}
|
|
CheckLogin().catch(console.error);
|
|
}, [dispatch, storeLoad])
|
|
|
|
|
|
|
|
if(!isLoading) {
|
|
return (
|
|
<BrowserRouter>
|
|
<Routes>
|
|
<Route path='/' element={<RequireAuth><IndexPage/></RequireAuth>}/>
|
|
<Route path='/login' element={<OnlyUnauthorized><LoginForm/></OnlyUnauthorized>}/>
|
|
<Route path='/register' element={<OnlyUnauthorized><RegisterForm/></OnlyUnauthorized>}/>
|
|
</Routes>
|
|
</BrowserRouter>
|
|
)
|
|
}
|
|
}
|
|
|
|
export default App
|