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 @@
-
-
-
-
-
-
-
+
+
+
+
@@ -34,13 +27,11 @@
+
+
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"
/>
-
-
-
- Clear filter
-
+
+
+ Clear filter
+
+
+
+
+
+
-
-
-
-
-
+
+