diff --git a/package.json b/package.json
index 1678587..a0aedae 100644
--- a/package.json
+++ b/package.json
@@ -13,6 +13,7 @@
"bootstrap-vue": "^2.17.0",
"md5-es": "1.8.2",
"vue": "^2.6.12",
+ "vue-infinite-loading": "2.4.5",
"vue-router": "^3.4.3",
"vuex": "^3.5.1"
},
diff --git a/src/library/album/AlbumLibrary.vue b/src/library/album/AlbumLibrary.vue
index a62c33f..4e6a2f4 100644
--- a/src/library/album/AlbumLibrary.vue
+++ b/src/library/album/AlbumLibrary.vue
@@ -7,9 +7,8 @@
-
-
-
+
+
diff --git a/src/shared/api.ts b/src/shared/api.ts
index 491a9ab..e4191f9 100644
--- a/src/shared/api.ts
+++ b/src/shared/api.ts
@@ -142,7 +142,7 @@ export class API {
.map(this.normalizeArtist, this)
}
- async getAlbums(sort: AlbumSort, size = 500): Promise {
+ async getAlbums(sort: AlbumSort, size: number, offset = 0): Promise {
const type = {
'a-z': 'alphabeticalByName',
'recently-added': 'newest',
@@ -151,11 +151,7 @@ export class API {
random: 'random',
}[sort]
- const params = {
- type,
- offset: '0',
- size: size,
- }
+ const params = { type, offset, size }
const response = await this.get('rest/getAlbumList2', params)
const albums = response.albumList2?.album || []
return albums.map(this.normalizeAlbum, this)
diff --git a/src/shared/components/InfiniteLoader.vue b/src/shared/components/InfiniteLoader.vue
new file mode 100644
index 0000000..cad3bba
--- /dev/null
+++ b/src/shared/components/InfiniteLoader.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/shared/components/index.ts b/src/shared/components/index.ts
index ef0caca..cf3c5c1 100644
--- a/src/shared/components/index.ts
+++ b/src/shared/components/index.ts
@@ -2,6 +2,7 @@ import Vue from 'vue'
import ContentLoader from './ContentLoader.vue'
import ExternalLink from './ExternalLink.vue'
import Icon from './Icon.vue'
+import InfiniteLoader from './InfiniteLoader.vue'
import OverflowMenu from './OverflowMenu.vue'
import Tiles from './Tiles.vue'
import Tile from './Tile.vue'
@@ -10,6 +11,7 @@ const components = {
ContentLoader,
ExternalLink,
Icon,
+ InfiniteLoader,
OverflowMenu,
Tiles,
Tile,
diff --git a/yarn.lock b/yarn.lock
index f8da440..6c8bfdd 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -9361,6 +9361,11 @@ vue-hot-reload-api@^2.3.0:
resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2"
integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==
+vue-infinite-loading@2.4.5:
+ version "2.4.5"
+ resolved "https://registry.yarnpkg.com/vue-infinite-loading/-/vue-infinite-loading-2.4.5.tgz#cc20fd40af7f20188006443c99b60470cf1de1b3"
+ integrity sha512-xhq95Mxun060bRnsOoLE2Be6BR7jYwuC89kDe18+GmCLVrRA/dU0jrGb12Xu6NjmKs+iTW0AA6saSEmEW4cR7g==
+
"vue-loader-v16@npm:vue-loader@^16.0.0-beta.7":
version "16.0.0-beta.7"
resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-16.0.0-beta.7.tgz#6f2726fa0e2b1fbae67895c47593bbf69f2b9ab8"