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.

46 lines
1.6 KiB
TypeScript

import { useEffect } from "react"
import RequireAuth from "./components/Auth/RequireAuth"
import OnlyUnauthorized from "./components/Auth/OnlyUnauthorized"
import IndexPage from "./pages/IndexPage"
import LoginPage from "./pages/LoginPage"
import RegisterPage from "./pages/RegisterPage"
import MessengerPage from "./pages/Messenger/MessengerPage"
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><LoginPage/></OnlyUnauthorized>}/>
<Route path='/register' element={<OnlyUnauthorized><RegisterPage/></OnlyUnauthorized>}/>
<Route path='/messenger' element={<RequireAuth><MessengerPage/></RequireAuth>}/>
</Routes>
</BrowserRouter>
)
}
}
export default App