import { createDiscreteApi } from 'naive-ui'

import type { Router, RouteLocationNormalized, NavigationGuardNext } from '@baota/router/each'
import { useCreateRouterEach } from '@baota/router/each' // 全局路由守卫

// 创建离散API
const { loadingBar } = createDiscreteApi(['loadingBar'])

/**
 * @description 全局路由守卫
 * @param {Router} router 路由实例
 * @return {void}
 */
const useRouterEach = (router: Router) =>
	useCreateRouterEach(router, {
		beforeEach: (to: RouteLocationNormalized, _: RouteLocationNormalized, next: NavigationGuardNext) => {
			// 开始加载
			loadingBar.start()
			// 判断当前路由是否存在，如果不存在，则跳转到 404
			if (!router.hasRoute(to.name as string)) {
				if (!to.path.includes('/404')) return next({ path: '/404' })
			}
			next()
		},
		afterEach: (to: RouteLocationNormalized) => {
			loadingBar.finish()
			console.log('afterEach', to)
		},
	})

export default useRouterEach
