import { route } from 'quasar/wrappers'
import { createRouter, createMemoryHistory, createWebHistory, createWebHashHistory } from 'vue-router'
import routes from './routes'
import { LoadingBar,Loading } from 'quasar'
/*
 * If not building with SSR mode, you can
 * directly export the Router instantiation;
 *
 * The function below can be async too; either use
 * async/await or return a Promise which resolves
 * with the Router instance.
 */

export default route(function (/* { store, ssrContext } */) {
  const createHistory = process.env.SERVER
    ? createMemoryHistory
    : (process.env.VUE_ROUTER_MODE === 'history' ? createWebHistory : createWebHashHistory)

  const Router = createRouter({
    scrollBehavior: (to, from, savedPosition) => {
      return savedPosition || { left: 0, top: 0 }
    },
    routes,

    // Leave this as is and make changes in quasar.conf.js instead!
    // quasar.conf.js -> build -> vueRouterMode
    // quasar.conf.js -> build -> publicPath
    history: createHistory(process.env.VUE_ROUTER_BASE)
  })

  // 路由拦截
  Router.onError(e => {
    console.error('router on Error !', e)
    LoadingBar.stop()
    Loading.hide('page-loading')
  })

  Router.beforeEach((to, from, next) => {
    // LoadingBar.isActive
    LoadingBar.start()
    Loading.show({group:'page-loading'})
    /* 必须调用 `next` */
    // from.meta.savedPosition_y = document.body.scrollTop || document.documentElement.scrollTop
    // to.meta.$from = from
    next();
  })

  Router.afterEach((to, from) => {
    LoadingBar.stop()
    Loading.hide('page-loading')
  })
  return Router
})
