index.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. import { createRouter, createWebHistory } from 'vue-router'
  2. import { useUserStore } from '../stores/user'
  3. import { emitter } from '../utils/eventBus'
  4. const router = createRouter({
  5. history: createWebHistory(import.meta.env.BASE_URL),
  6. routes: [
  7. {
  8. path: '/',
  9. redirect: 'home'
  10. },
  11. {
  12. path: '/',
  13. name: 'index',
  14. component: () => import('@/views/TabView.vue'),
  15. children: [
  16. {
  17. path: '/home',
  18. name: 'home',
  19. component: () => import('@/views/HomeView.vue'),
  20. meta: {
  21. allowGuest: true
  22. }
  23. },
  24. {
  25. path: '/watching',
  26. name: 'watching',
  27. component: () => import('@/views/WatchingView.vue'),
  28. meta: {}
  29. },
  30. {
  31. path: '/mine',
  32. name: 'mine',
  33. component: () => import('@/views/MineView.vue'),
  34. meta: {}
  35. }
  36. ]
  37. },
  38. {
  39. path: '/history',
  40. name: 'history',
  41. component: () => import('@/views/HistoryView.vue')
  42. },
  43. {
  44. path: '/wallet',
  45. name: 'wallet',
  46. component: () => import('@/views/WalletView.vue')
  47. },
  48. {
  49. path: '/record',
  50. name: 'record',
  51. component: () => import('@/views/RecordView.vue')
  52. },
  53. {
  54. path: '/login',
  55. name: 'login',
  56. component: () => import('@/views/LoginView.vue'),
  57. meta: {
  58. allowGuest: true
  59. }
  60. },
  61. {
  62. path: '/register',
  63. name: 'register',
  64. component: () => import('@/views/RegisterView.vue'),
  65. meta: {
  66. allowGuest: true
  67. }
  68. },
  69. {
  70. path: '/video',
  71. name: 'video',
  72. component: () => import('@/views/VideoView.vue'),
  73. meta: {}
  74. }
  75. ],
  76. scrollBehavior(to, from, savedPosition) {
  77. console.log(to)
  78. return {
  79. left: 0,
  80. top: 0
  81. }
  82. }
  83. })
  84. router.beforeEach(async (to, from, next) => {
  85. const { user, get: getUser } = useUserStore()
  86. if (!to.meta.allowGuest && !user) {
  87. try {
  88. await getUser()
  89. next()
  90. } catch (error) {
  91. next(false)
  92. emitter.emit('promptLogin')
  93. }
  94. } else {
  95. if (!user) {
  96. getUser().catch(() => {})
  97. }
  98. next()
  99. }
  100. })
  101. export default router