import React from 'react';
import { Switch, Route, Redirect } from 'react-router-dom';
import { NotFound, AuthorizedRoute } from '@/components';
import routerData from '@/routerConfig';

/**
 * 渲染路由组件
 * @param {Object} item routerConfig中的子项
 * @param {Number} index 索引
 * @returns {*} Route节点
 */
// const renderNormalRoute = (item, index) => {
//     // return item.component ? <Route key={index} path={item.path} component={item.component} exact={item.exact} /> : null;
//     return item.component ? (
//         <Route
//             key={index}
//             path={item.path}
//             render={(props) => {
//                 document.title = item.title;
//                 return <item.component title={item.title} {...props} />;
//             }}
//             exact={item.exact}
//         />
//     ) : null;
// };

/**
 * 渲染权限路由组件
 * @param {Object} item routerConfig中的子项
 * @param {Number} index 索引
 * @returns {*} Route节点
 */
const renderAuthorizedRoute = (item, index) => {
    return item.component ? (
        <AuthorizedRoute
            key={index}
            path={item.path}
            component={item.component}
            exact={item.exact}
            authority={item.authority}
            redirectPath="/exception/403"
        />
    ) : null;
};

const mainRoutes = () => {
    return (
        <Switch>
            {/* 渲染路由表 */}
            {/* {routerData.map(renderNormalRoute)} */}
            {/* 渲染权限路由表 */}
            {routerData.map(renderAuthorizedRoute)}

            <Redirect to="/workplace" />
            {/* 未匹配到的路由重定向到 NotFound */}
            <Route component={NotFound} />
        </Switch>
    );
};

export default mainRoutes;
