import { createRouter, createWebHistory } from "vue-router"; import { useAuthStore } from "@/stores/auth"; const LoginView = () => import("@/views/LoginView.vue"); const MainLayout = () => import("@/components/layout/MainLayout.vue"); const DashboardView = () => import("@/views/DashboardView.vue"); const LiveRoomsView = () => import("@/views/LiveRoomsView.vue"); const RecordTasksView = () => import("@/views/RecordTasksView.vue"); const TranscodeTasksView = () => import("@/views/TranscodeTasksView.vue"); const UploadTasksView = () => import("@/views/UploadTasksView.vue"); const RecordTaskDetailView = () => import("@/views/RecordTaskDetailView.vue"); const RecordSessionDetailView = () => import("@/views/RecordSessionDetailView.vue"); const MediaBrowserView = () => import("@/views/MediaBrowserView.vue"); const DailyReviewsView = () => import("@/views/DailyReviewsView.vue"); const LogsView = () => import("@/views/LogsView.vue"); const RecoveryView = () => import("@/views/RecoveryView.vue"); const SettingsView = () => import("@/views/SettingsView.vue"); const router = createRouter({ history: createWebHistory(), routes: [ { path: "/login", name: "login", component: LoginView, meta: { anonymous: true } }, { path: "/", component: MainLayout, children: [ { path: "", name: "dashboard", component: DashboardView }, { path: "live-rooms", name: "live-rooms", component: LiveRoomsView }, { path: "record-tasks", name: "record-tasks", component: RecordTasksView }, { path: "transcode-tasks", name: "transcode-tasks", component: TranscodeTasksView }, { path: "upload-tasks", name: "upload-tasks", component: UploadTasksView }, { path: "media-browser", name: "media-browser", component: MediaBrowserView }, { path: "record-tasks/:id", name: "record-task-detail", component: RecordTaskDetailView, props: true }, { path: "record-sessions/:id", name: "record-session-detail", component: RecordSessionDetailView, props: true }, { path: "daily-reviews", name: "daily-reviews", component: DailyReviewsView }, { path: "logs", name: "logs", component: LogsView }, { path: "recovery", name: "recovery", component: RecoveryView }, { path: "settings/:section?", name: "settings", component: SettingsView } ] } ] }); router.beforeEach((to) => { const authStore = useAuthStore(); if (!to.meta.anonymous && !authStore.isAuthenticated) { return { name: "login" }; } if (to.name === "login" && authStore.isAuthenticated) { return { name: "live-rooms" }; } return true; }); export default router;