Files
live_recorder/frontend/src/router/index.ts
T

114 lines
3.1 KiB
TypeScript

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;