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;