diff --git a/changes/changelog.d/1228.bugfix b/changes/changelog.d/1228.bugfix new file mode 100644 index 0000000000000000000000000000000000000000..226c8505719e4345efce653447a62805e51c7e9e --- /dev/null +++ b/changes/changelog.d/1228.bugfix @@ -0,0 +1 @@ +Fixed duplication of discs for multi-disc albums in album views (#1228) \ No newline at end of file diff --git a/front/src/components/library/AlbumBase.vue b/front/src/components/library/AlbumBase.vue index 8bdb2fc3425ce96c977702fc5d39e50f1af067a5..8ae555f6c8c7792331fffdb5c05b5e35bd04562e 100644 --- a/front/src/components/library/AlbumBase.vue +++ b/front/src/components/library/AlbumBase.vue @@ -134,15 +134,17 @@ import TagsList from "@/components/tags/List" import ArtistLabel from '@/components/audio/ArtistLabel' import AlbumDropdown from './AlbumDropdown' -function groupByDisc(acc, track) { - var dn = track.disc_number - 1 - if (dn < 0) dn = 0 - if (acc[dn] == undefined) { - acc.push([track]) - } else { - acc[dn].push(track) +function groupByDisc(initial) { + function inner(acc, track) { + var dn = track.disc_number - initial + if (acc[dn] == undefined) { + acc.push([track]) + } else { + acc[dn].push(track) + } + return acc } - return acc + return inner } export default { @@ -180,7 +182,7 @@ export default { tracksResponse = await tracksResponse this.object = albumResponse.data this.object.tracks = tracksResponse.data.results - this.discs = this.object.tracks.reduce(groupByDisc, []) + this.discs = this.object.tracks.reduce(groupByDisc(this.object.tracks[0].disc_number), []) this.isLoading = false }, remove () { diff --git a/front/src/components/library/AlbumDetail.vue b/front/src/components/library/AlbumDetail.vue index bc670ce6ba04b2e783180c388a601b956b5f0adf..b9d4821e60924a5b0a1ce133cd52ee305d930125 100644 --- a/front/src/components/library/AlbumDetail.vue +++ b/front/src/components/library/AlbumDetail.vue @@ -7,12 +7,12 @@ <channel-entries v-if="artist.channel && isSerie" :limit="50" :filters="{channel: artist.channel.uuid, ordering: '-creation_date'}"> </channel-entries> <template v-else-if="discs && discs.length > 1"> - <div v-for="(tracks, discNumber) in discs" :key="discNumber"> + <div v-for="tracks in discs" :key="tracks.disc_number"> <div class="ui hidden divider"></div> <play-button class="right floated mini inverted vibrant" :tracks="tracks"></play-button> <translate tag="h3" - :translate-params="{number: discNumber + 1}" + :translate-params="{number: tracks[0].disc_number}" translate-context="Content/Album/" >Volume %{ number }</translate> <album-entries :tracks="tracks"></album-entries>