import { PageLoading } from '@ant-design/pro-layout';
import { history, Link } from 'umi';
import RightContent from '@/components/RightContent';
import Footer from '@/components/Footer';
import { currentUser as queryCurrentUser } from './services/user';
import { requestConfig } from '@/utils/request';
const isDev = process.env.NODE_ENV === 'development';
let loginPath = '/user/login';
/** 获取用户信息比较慢的时候会展示一个 loading */

export const initialStateConfig = {
  loading: <PageLoading />,
};
/**
 * @see  https://umijs.org/zh-CN/plugins/plugin-initial-state
 * */

export async function getInitialState() {
  const fetchUserInfo = async () => {
    try {
      return await queryCurrentUser();
    } catch (error) {      
      if (history.location.pathname == '/user/orgLogin') {
        history.push('/user/orgLogin')
      }else{
        history.push(loginPath);
      }
    }

    return undefined;
  }; // 如果是登录页面，不执行

  if (history.location.pathname !== loginPath) {
    const res = await fetchUserInfo();
    return {
      fetchUserInfo,
      currentUser: res.user,
      menuAccess: res.menu,
      report_url: res.report_url,
      roleAlias: res.roleAlias,
      settings: {},
    };
  }

  return {
    fetchUserInfo,
    settings: {},
  };
} // ProLayout 支持的api https://procomponents.ant.design/components/layout

export const layout = ({ initialState }) => {
  return {
    rightContentRender: () => <RightContent />,
    disableContentMargin: false,

    footerRender: () => <Footer />,
    onPageChange: () => {
      const { location } = history; // 如果没有登录，重定向到 login

      if (!initialState?.currentUser &&
        location.pathname !== loginPath &&
        location.pathname !== '/user/orgLogin'
      ) {
        if (initialState.roleAlias == 'admin') {
          history.push(loginPath);
        } else if (initialState.roleAlias == 'org') {
          history.push('/user/orgLogin');
        }
      }
    },
    menuHeaderRender: undefined,
    // 自定义 403 页面
    // unAccessible: history.push('/'),
    ...initialState?.settings,
  };
};

export const request = requestConfig;
