File size: 1,415 Bytes
5fa7a59
 
1cb22db
5fa7a59
 
2048aa6
5b78b55
5fa7a59
 
 
 
 
 
 
b1722bb
5fa7a59
1cb22db
5fa7a59
2048aa6
5b78b55
5fa7a59
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import { createRouter, createWebHistory } from 'vue-router'
import Main from '../pages/Main.vue'
import LeaderboardView from '../views/LeaderboardView.vue'
import LiveView from '../views/LiveView.vue'
import AddAssetsView from '../views/AddAssetView.vue'
import RequestView from '../views/RequestView.vue'
import AssetRequestsView from '../views/AssetRequestsView.vue'
import { dataService } from '../lib/dataService.js'

const routes = [
  { 
    path: '/', 
    name: 'main', 
    component: Main,
    redirect: '/live',
    children: [
      { path: '/leaderboard', name: 'leadboard', component: LeaderboardView },
      { path: '/live', name: 'live', component: LiveView },
      { path: '/add-asset', name: 'add-asset', component: RequestView },
      { path: '/asset-requests', name: 'asset-requests', component: AssetRequestsView },
    ]
  }
]

const router = createRouter({
  history: createWebHistory(),
  routes
})

// 全局路由守卫:确保数据在导航前开始加载
router.beforeEach(async (to, from, next) => {
  // 如果数据还未加载且不在加载中,则触发加载
  if (!dataService.loaded && !dataService.loading) {
    console.log('[Router] Triggering data load before navigation')
    // 不等待加载完成,让加载在后台进行
    dataService.load().catch(e => {
      console.error('[Router] Error loading data:', e)
    })
  }
  next()
})

export default router