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"