| | |
| | | import { RoutesAlias } from '../routesAlias' |
| | | import { staticRoutes } from '../routes/staticRoutes' |
| | | import { loadingService } from '@/utils/ui' |
| | | import { warmMenuIcons } from '@/utils/ui/iconify-loader' |
| | | import { useCommon } from '@/hooks/core/useCommon' |
| | | import { useWorktabStore } from '@/store/modules/worktab' |
| | | import { fetchGetUserInfo, normalizeUserInfo } from '@/api/auth' |
| | |
| | | let routeInitFailed = false |
| | | let routeInitInProgress = false |
| | | let pendingRouteLocation = null |
| | | let pendingWarmupMenuList = null |
| | | let homeWarmupTriggered = false |
| | | function getPendingLoading() { |
| | | return pendingLoading |
| | | } |
| | |
| | | routeInitFailed = false |
| | | routeInitInProgress = false |
| | | pendingRouteLocation = null |
| | | pendingWarmupMenuList = null |
| | | homeWarmupTriggered = false |
| | | } |
| | | function createRouteLocation(route) { |
| | | return { |
| | |
| | | throw new Error('获取菜单列表失败,请重新登录') |
| | | } |
| | | routeRegistry?.register(menuList) |
| | | routeRegistry?.warm(menuList) |
| | | pendingWarmupMenuList = menuList |
| | | homeWarmupTriggered = false |
| | | const menuStore = useMenuStore() |
| | | menuStore.setMenuList(menuList) |
| | | menuStore.addRemoveRouteFns(routeRegistry?.getRemoveRouteFns() || []) |
| | | warmMenuIcons(menuList) |
| | | IframeRouteManager.getInstance().save() |
| | | useWorktabStore().validateWorktabs(router) |
| | | const initialTargetLocation = createRouteLocation(to) |
| | |
| | | function isUnauthorizedError(error) { |
| | | return isHttpError(error) && error.code === ApiStatus.unauthorized |
| | | } |
| | | function triggerHomeRouteWarmup(currentPath, homePath) { |
| | | if (homeWarmupTriggered || !routeRegistry || !pendingWarmupMenuList?.length) { |
| | | return |
| | | } |
| | | if (!currentPath || !homePath || currentPath !== homePath) { |
| | | return |
| | | } |
| | | homeWarmupTriggered = true |
| | | const schedule = globalThis.requestAnimationFrame |
| | | ? (task) => globalThis.requestAnimationFrame(() => globalThis.requestAnimationFrame(task)) |
| | | : (task) => setTimeout(task, 120) |
| | | schedule(() => { |
| | | routeRegistry?.warm(pendingWarmupMenuList, { |
| | | limit: Number.MAX_SAFE_INTEGER |
| | | }) |
| | | }) |
| | | } |
| | | export { |
| | | getPendingLoading, |
| | | getRouteInitFailed, |
| | | resetPendingLoading, |
| | | resetRouteInitState, |
| | | resetRouterState, |
| | | setupBeforeEachGuard |
| | | setupBeforeEachGuard, |
| | | triggerHomeRouteWarmup |
| | | } |