| 1 | import React, { useEffect, useState } from 'react'; |
| 2 | import ReactDOM from 'react-dom'; |
| 3 | import 'assets/css/App.css'; |
| 4 | import { BrowserRouter as Router, Routes, Route, useNavigate } from 'react-router-dom'; |
| 5 | import AuthLayout from './layouts/auth'; |
| 6 | import AdminLayout from 'layouts/admin'; |
| 7 | import UserLayout from 'layouts/user'; |
| 8 | import { ChakraProvider } from '@chakra-ui/react'; |
| 9 | import theme from 'theme/theme'; |
| 10 | import { ThemeEditorProvider } from '@hypertheme-editor/chakra-ui'; |
| 11 | import { ToastContainer } from 'react-toastify'; |
| 12 | import 'react-toastify/dist/ReactToastify.css'; |
| 13 | import { Provider } from 'react-redux'; |
| 14 | import { store, persistor } from './redux/store'; |
| 15 | import { PersistGate } from 'redux-persist/integration/react'; |
| 16 | |
| 17 | function App() { |
| 18 | const token = localStorage.getItem("token") || sessionStorage.getItem("token"); |
| 19 | |
| 20 | const user = JSON.parse(localStorage.getItem("user")) |
| 21 | useNavigate() |
| 22 | |
| 23 | return ( |
| 24 | <> |
| 25 | <ToastContainer /> |
| 26 | <Routes> |
| 27 | {token && user?.role ? ( |
| 28 | user?.role === 'user' ? |
| 29 | <Route path="/*" element={<UserLayout />} /> |
| 30 | : user?.role === 'superAdmin' ? |
| 31 | <Route path="/*" element={<AdminLayout />} /> |
| 32 | : '' |
| 33 | ) : ( |
| 34 | <Route path="/*" element={<AuthLayout />} /> |
| 35 | )} |
| 36 | </Routes> |
| 37 | </> |
| 38 | ); |
| 39 | } |
| 40 | |
| 41 | ReactDOM.render( |
| 42 | <Provider store={store}> |
| 43 | <PersistGate loading={null} persistor={persistor}> |
| 44 | <ChakraProvider theme={theme}> |
| 45 | <React.StrictMode> |
| 46 | <ThemeEditorProvider> |
| 47 | <Router> |
| 48 | <App /> |
| 49 | </Router> |
| 50 | </ThemeEditorProvider> |
| 51 | </React.StrictMode> |
| 52 | </ChakraProvider> |
| 53 | </PersistGate> |
| 54 | </Provider> |
| 55 | , document.getElementById('root') |
| 56 | ); |