import React, { useState, useEffect } from "react";
import { autoFixContext } from "react-activation";
import jsxDevRuntime from "react/jsx-dev-runtime";
import jsxRuntime from "react/jsx-runtime";
import { AliveScope } from "react-activation";
import { history } from "umi";
import { message } from "antd";
import { queryCurrentUser, getMenu } from "./services/login";
import defaultSettings from "../config/defaultSettings";
let loginpath = '/user/login';
export function rootContainer(container) {
  return React.createElement(AliveScope, null, container);
}

autoFixContext(
  [jsxRuntime, "jsx", "jsxs", "jsxDEV"],
  [jsxDevRuntime, "jsx", "jsxs", "jsxDEV"]
);

export async function getInitialState() {
  let token = localStorage.getItem("TAIANTOKEN");
  const fetchUserInfo = async () => {
    try {
      const res = await queryCurrentUser();
      return res?.data ?? {};
    } catch (error) {
      history.push(loginpath);
    }
    return undefined;
  }; // 如果是登录页面,不执行

  const getmenuData = async () => {
    try {
      const res = await getMenu();
      return res?.data ?? {};
    } catch (error) {
      message.error('接口失败');
    }
    return undefined;
  }; // 如果是登录页面,不执行

  if (history.location.pathname !== loginpath && token) {
    const currentUserData = await fetchUserInfo();
    let menuData;
    if (currentUserData?.data?.userName) {
      menuData = await getmenuData();
    }
    return {
      fetchUserInfo,
      currentUser: currentUserData?.data,
      routesMenu: menuData?.userHavePermList,
      buttonPerm:menuData?.buttonPerm,
      getmenuData,
      routes: {},
    };
  }
  return {
    fetchUserInfo,
    getmenuData
  };
}