import router from "./router";
import store from "./store";
import { Message } from "element-ui";
import NProgress from "nprogress"; // progress bar
import "nprogress/nprogress.css"; // progress bar style
import { getToken } from "@/utils/auth"; // get token from cookie
import getPageTitle from "@/utils/get-page-title";

NProgress.configure({
  showSpinner: false,
}); // NProgress Configuration

const whiteList = [
  "/login",
  "/userLogin",
  "/userRegister",
  "/auth-redirect",
  "/dashboard",
]; // no redirect whitelist

router.beforeEach(async (to, from, next) => {
  // start progress bar
  NProgress.start();

  // set page title
  document.title = getPageTitle(to.meta.title);

  // determine whether the user has logged in
  const hasToken = getToken();
  const userName = sessionStorage.getItem("username");
  const userId = sessionStorage.getItem("userid");
  if (userName) {
    if (to.path === "/login") {
      // if is logged in, redirect to the home page
      next({
        path: "/",
      });
      // router.addRoutes(accessRoutes)
      NProgress.done();
    } else {
      const sessionRouters = JSON.parse(sessionStorage.getItem("routes"));
      store.commit("user/UP_ROUTER", sessionRouters);
      const routList = JSON.parse(sessionStorage.getItem("routerIdList"));
      // store.dispatch("websocket/statAuditNum", {
      //   userId,
      // });
      // next();
      if(to.path=='/userLogin' || to.path=='/403' || to.path == '/userRegister' || to.path=='/auth-redirect' || to.path == '/dashboard'){
        store.dispatch("websocket/statAuditNum", {
          userId,
        });
        next();
        NProgress.done();
      }else if(routList.hasOwnProperty(to.path)){
        store.dispatch("websocket/statAuditNum", {
          userId,
        });
        next();
        NProgress.done();
      }else{
        next(`/403`);
        NProgress.done();
      }
    
    }
  } else {
    /* has no token*/
    // console.log("没有姓名")
    // console.log(whiteList)
    if (whiteList.indexOf(to.path) !== -1) {
      // in the free login whitelist, go directly
      next();
    } else {
      // other pages that do not have permission to access are redirected to the login page.
      setTimeout(function () {
        next(`/login`);
        NProgress.done();
      });
    }
  }
});

router.afterEach(() => {
  // finish progress bar
  NProgress.done();
});
