import { useLayout } from '@hooks/useLayout'; import { useRouterTransition } from '@hooks/useRouterTransition'; import BlankLayout from '@layouts/BlankLayout'; import LayoutWrapper from '@layouts/components/layout-wrapper'; import HeaderLayout from '@layouts/HeaderLayout'; import HorizontalLayout from '@src/layouts/HorizontalLayout'; import VerticalLayout from '@src/layouts/VerticalLayout'; import { lazy, Suspense, useEffect } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { BrowserRouter as AppRouter, Redirect, Route, Switch } from 'react-router-dom'; import * as Actions from '../modules/account/login/actions/authAction'; import { Routes } from './routes'; const Router = () => { const [layout, setLayout] = useLayout(); const [transition, setTransition] = useRouterTransition(); const { isLogin } = useSelector(state => state.authState); // const isLogin = true; const dispatch = useDispatch(); useEffect(() => { // console.log('isLogin>>>>>>>>', isLogin); if (!isLogin) { dispatch(Actions.check.request()); } }, [isLogin]); const DefaultLayout = layout === 'horizontal' ? 'HorizontalLayout' : 'VerticalLayout'; const Layouts = { BlankLayout, VerticalLayout, HorizontalLayout, HeaderLayout }; const currentActiveItem = null; const LayoutRoutesAndPaths = layout => { const LayoutRoutes = []; const LayoutPaths = []; if (Routes) { Routes.filter(route => { if ( route.layout === layout || (route.layout === undefined && DefaultLayout === layout) ) { LayoutRoutes.push(route); LayoutPaths.push(route.path); } }); } return { LayoutRoutes, LayoutPaths }; }; const NotAuthorized = lazy(() => import('@src/views/NotAuthorized')); const Error = lazy(() => import('@src/views/Error')); const FinalRoute = props => { const route = props.route; let action, resource; if (route.meta) { action = route.meta.action ? route.meta.action : null; resource = route.meta.resource ? route.meta.resource : null; } if (isLogin === false && !route.meta?.authRoute) { return ; } else { return ; } }; const ResolveRoutes = () => { return Object.keys(Layouts).map((layout, index) => { const LayoutTag = Layouts[layout]; const { LayoutRoutes, LayoutPaths } = LayoutRoutesAndPaths(layout); const routerProps = {}; return ( {LayoutRoutes.map(route => { return ( { Object.assign(routerProps, { ...props, meta: route.meta }); return ( ); }} /> ); })} ); }); }; return ( { return ; }} /> ( )} /> {ResolveRoutes()} ); }; export default Router;