irongit
56 lines1.6 KBJavaScript
1import React, { useEffect, useState } from 'react';
2import ReactDOM from 'react-dom';
3import 'assets/css/App.css';
4import { BrowserRouter as Router, Routes, Route, useNavigate } from 'react-router-dom';
5import AuthLayout from './layouts/auth';
6import AdminLayout from 'layouts/admin';
7import UserLayout from 'layouts/user';
8import { ChakraProvider } from '@chakra-ui/react';
9import theme from 'theme/theme';
10import { ThemeEditorProvider } from '@hypertheme-editor/chakra-ui';
11import { ToastContainer } from 'react-toastify';
12import 'react-toastify/dist/ReactToastify.css';
13import { Provider } from 'react-redux';
14import { store, persistor } from './redux/store';
15import { PersistGate } from 'redux-persist/integration/react';
16
17function 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
41ReactDOM.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);