import {
  createRouter,
  createWebHistory,
  RouteRecordRaw,
  createWebHashHistory,
  Router,
} from 'vue-router'
import Home from '@/views/home/Home.vue'

// 扩展继承属性
interface extendRoute {
  hidden?: boolean
}

//

import userless from '@/routers/modules/userless'

/**
 * path ==> 路由路径
 * name ==> 路由名称
 * component ==> 路由组件
 * redirect ==> 路由重定向
 * alwaysShow ==> 如果设置为true，将始终显示根菜单，无论其子路由长度如何
 * hidden ==> 如果“hidden:true”不会显示在侧边栏中（默认值为false）
 * keepAlive ==> 设为true 缓存
 * meta ==> 路由元信息
 * meta.title ==> 路由标题
 * meta.icon ==> 菜单icon
 * meta.affix ==> 如果设置为true将会出现在 标签栏中
 * meta.breadcrumb ==> 如果设置为false，该项将隐藏在breadcrumb中（默认值为true）
 * meta.activeMenu ==> 详情页的时候可以设置菜单高亮 ,高亮菜单的path
 */

export const constantRoutes: Array<RouteRecordRaw & extendRoute> = [
  {
    path: '/404',
    name: '404',
    component: () => import('@/views/errorPages/404.vue'),
  },
  {
    path: '/403',
    name: '403',
    component: () => import('@/views/errorPages/403.vue'),
  },
  userless,
  {
    path: '/',
    name: '',
    component: Home,
    // redirect: '/card/order',
    meta: {
      OnBreadCrumb: false,
      requiresAuth: true,
    },
    redirect: '/enter/dashboard',
    children: [
      {
        meta: {
          OnBreadCrumb: true,
        },
        path: 'enter',
        name: 'R-Enter',
        component: () => import(/* webpackChunkName: "page" */ '@/views/page/Page.vue'),
        children: [
          {
            meta: {
              OnBreadCrumb: true,
            },
            path: 'dashboard',
            name: 'R-Dashboard',
            component: () =>
              import(/* webpackChunkName: "dashboard" */ '@/views/enter/dashboard/index.vue'),
          },
        ],
      },
    ],
  },
]

/**
 * notFoundRouter(找不到路由)
 */
export const notFoundRouter = {
  path: '/:pathMatch(.*)',
  name: 'notFound',
  redirect: '/404',
}

const router = createRouter({
  // history: createWebHistory(process.env.BASE_URL), // history
  history: createWebHashHistory(), // hash
  routes: constantRoutes,
})

function loggedIn() {
  return true
  // return !!sessionStorage.getItem('user')
}

router.beforeEach((to, from, next) => {
  if (to.matched.some((record) => record.meta.requiresAuth)) {
    console.log(loggedIn())

    if (!loggedIn()) {
      next({
        path: '/signin',
        // query: { redirect: to.fullPath }
      })
    } else {
      if (to.path == '/') {
        next({
          path: '/',
        })
      } else {
        next()
      }
    }
  } else {
    next()
  }
})

export default router
