114 lines
3.1 KiB
TypeScript
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;
|