diff --git a/komga-webui/src/components/ItemBrowser.vue b/komga-webui/src/components/ItemBrowser.vue index 589efdfc6..d2cd6345a 100644 --- a/komga-webui/src/components/ItemBrowser.vue +++ b/komga-webui/src/components/ItemBrowser.vue @@ -1,31 +1,24 @@ + + diff --git a/komga-webui/src/mixins/VisibleElements.ts b/komga-webui/src/mixins/VisibleElements.ts deleted file mode 100644 index 06f8c4804..000000000 --- a/komga-webui/src/mixins/VisibleElements.ts +++ /dev/null @@ -1,22 +0,0 @@ -import Vue from 'vue' - -const visibleElements = Vue.extend({ - data: () => { - return { - visibleElements: [] as number[], - } - }, - methods: { - async onElementIntersect (entries: any, observer: any, isIntersecting: boolean) { - const elementIndex = Number(entries[0].target.dataset['index']) - if (isIntersecting) { - this.visibleElements.push(elementIndex) - } else { - this.$_.pull(this.visibleElements, elementIndex) - } - this.$emit('update', this.visibleElements) - }, - }, -}) - -export default visibleElements diff --git a/komga-webui/src/router.ts b/komga-webui/src/router.ts index 1797060a2..ffea5e61b 100644 --- a/komga-webui/src/router.ts +++ b/komga-webui/src/router.ts @@ -5,13 +5,19 @@ import store from './store' Vue.use(Router) -const lStore = store +const lStore = store as any const adminGuard = (to: any, from: any, next: any) => { if (!lStore.getters.meAdmin) next({ name: 'home' }) else next() } +const noLibraryGuard = (to: any, from: any, next: any) => { + if (lStore.state.komgaLibraries.libraries.length === 0) { + next({ name: 'welcome' }) + } else next() +} + const router = new Router({ mode: 'history', base: urls.base, @@ -36,6 +42,7 @@ const router = new Router({ { path: '/dashboard', name: 'dashboard', + beforeEnter: noLibraryGuard, component: () => import(/* webpackChunkName: "dashboard" */ './views/Dashboard.vue'), }, { @@ -71,13 +78,14 @@ const router = new Router({ component: () => import(/* webpackChunkName: "account" */ './views/AccountSettings.vue'), }, { - path: '/libraries/:libraryId/:index?', + path: '/libraries/:libraryId', name: 'browse-libraries', + beforeEnter: noLibraryGuard, component: () => import(/* webpackChunkName: "browse-libraries" */ './views/BrowseLibraries.vue'), props: (route) => ({ libraryId: Number(route.params.libraryId) }), }, { - path: '/series/:seriesId/:index?', + path: '/series/:seriesId', name: 'browse-series', component: () => import(/* webpackChunkName: "browse-series" */ './views/BrowseSeries.vue'), props: (route) => ({ seriesId: Number(route.params.seriesId) }), diff --git a/komga-webui/src/types/common.ts b/komga-webui/src/types/common.ts deleted file mode 100644 index 80a276bd9..000000000 --- a/komga-webui/src/types/common.ts +++ /dev/null @@ -1,5 +0,0 @@ -export enum LoadState { - Loaded, - NotLoaded, - Loading -} diff --git a/komga-webui/src/views/BrowseLibraries.vue b/komga-webui/src/views/BrowseLibraries.vue index 32f693691..1f435da8c 100644 --- a/komga-webui/src/views/BrowseLibraries.vue +++ b/komga-webui/src/views/BrowseLibraries.vue @@ -42,6 +42,9 @@ :sort-options="sortOptions" :sort-active.sync="sortActive" /> + + + @@ -69,57 +72,72 @@ :series.sync="editSeriesSingle" /> - -