// @ts-nocheck
import { userAtom } from '@/atoms/user';
import ShortCuts, {
modalConfig as ShortCutsConfig
} from '@/components/short-cuts';
import VersionInfo, { modalConfig } from '@/components/version-info';
import { logout } from '@/pages/login/apis';
import { useAccessMarkedRoutes } from '@@/plugin-access';
import { useModel } from '@@/plugin-model';
import { ProLayout } from '@ant-design/pro-components';
import {
Link,
Outlet,
history,
matchRoutes,
useAppData,
useIntl,
useLocation,
useNavigate,
type IRoute
} from '@umijs/max';
import { Modal } from 'antd';
import { useAtom } from 'jotai';
import { useMemo, useState } from 'react';
import Exception from './Exception';
import './Layout.css';
import { LogoIcon, SLogoIcon } from './Logo';
import { getRightRenderContent } from './rightRender';
import { patchRoutes } from './runtime';
const loginPath = '/login';
// 过滤出需要显示的路由, 这里的filterFn 指 不希望显示的层级
const filterRoutes = (
routes: IRoute[],
filterFn: (route: IRoute) => boolean
) => {
if (routes.length === 0) {
return [];
}
let newRoutes = [];
for (const route of routes) {
const newRoute = { ...route };
if (filterFn(route)) {
if (Array.isArray(newRoute.routes)) {
newRoutes.push(...filterRoutes(newRoute.routes, filterFn));
}
} else {
if (Array.isArray(newRoute.children)) {
newRoute.children = filterRoutes(newRoute.children, filterFn);
newRoute.routes = newRoute.children;
}
newRoutes.push(newRoute);
}
}
return newRoutes;
};
const mapRoutes = (routes: IRoute[], role: string) => {
if (routes.length === 0) {
return [];
}
return routes.map((route) => {
const newRoute = { ...route, role };
if (route.originPath) {
newRoute.path = route.originPath;
}
if (Array.isArray(route.routes)) {
newRoute.routes = mapRoutes(route.routes, role);
}
if (Array.isArray(route.children)) {
newRoute.children = mapRoutes(route.children, role);
}
return newRoute;
});
};
export default (props: any) => {
const [userInfo] = useAtom(userAtom);
const location = useLocation();
const navigate = useNavigate();
const intl = useIntl();
const { clientRoutes, pluginManager } = useAppData();
const [collapsed, setCollapsed] = useState(false);
const initialInfo = (useModel && useModel('@@initialState')) || {
initialState: undefined,
loading: false,
setInitialState: null
};
const { initialState, loading, setInitialState } = initialInfo;
const userConfig = {
title: '',
locale: true
};
const formatMessage = (args) => {
return intl.formatMessage({ id: args.id });
};
const showVersion = () => {
Modal.info({
...modalConfig,
content: