swingmusic/src/router/index.js
2022-07-10 21:51:29 +03:00

95 lines
2.3 KiB
JavaScript

import state from "@/composables/state";
import useAStore from "@/stores/pages/album";
import useFStore from "@/stores/pages/folder";
import usePTrackStore from "@/stores/pages/playlist";
import usePStore from "@/stores/pages/playlists";
import AlbumsExplorer from "@/views/AlbumsExplorer.vue";
import AlbumView from "@/views/album/index.vue";
import ArtistsExplorer from "@/views/ArtistsExplorer.vue";
import FolderView from "@/views/FolderView.vue";
import Home from "@/views/Home.vue";
import Playlists from "@/views/Playlists.vue";
import PlaylistView from "@/views/playlist/index.vue";
import SettingsView from "@/views/SettingsView.vue";
import { createRouter, createWebHashHistory } from "vue-router";
const routes = [
{
path: "/",
name: "Home",
component: Home,
redirect: '/folder/$home'
},
{
path: "/folder/:path",
name: "FolderView",
component: FolderView,
beforeEnter: async (to) => {
state.loading.value = true;
await useFStore().fetchAll(to.params.path);
state.loading.value = false;
},
},
{
path: "/folder/",
redirect: "/folder/home",
},
{
path: "/playlists",
name: "Playlists",
component: Playlists,
beforeEnter: async () => {
state.loading.value = true;
await usePStore().fetchAll();
state.loading.value = false;
},
},
{
path: "/playlist/:pid",
name: "PlaylistView",
component: PlaylistView,
beforeEnter: async (to) => {
state.loading.value = true;
await usePTrackStore().fetchAll(to.params.pid);
state.loading.value = false;
},
},
{
path: "/albums",
name: "AlbumsView",
component: AlbumsExplorer,
},
{
path: "/albums/:hash",
name: "AlbumView",
component: AlbumView,
beforeEnter: async (to) => {
state.loading.value = true;
await useAStore().fetchTracksAndArtists(to.params.hash);
state.loading.value = false;
},
},
{
path: "/artists",
name: "ArtistsView",
component: ArtistsExplorer,
},
{
path: "/settings",
name: "SettingsView",
component: SettingsView,
},
{
path: "/:pathMatch(.*)",
component: () => import("../views/NotFound.vue"),
},
];
const router = createRouter({
mode: "hash",
history: createWebHashHistory(import.meta.env.BASE_URL),
routes,
});
export default router;