From 8cb745e56d8dab6b1a2457e1491e328bb4f2faa1 Mon Sep 17 00:00:00 2001
From: Eliot Berriot <contact@eliotberriot.com>
Date: Sat, 3 Nov 2018 14:24:18 +0100
Subject: [PATCH] Fix #599: wrong album/track count on artist page

---
 changes/changelog.d/599.bugfix          |  1 +
 front/src/components/library/Artist.vue | 20 ++++----------------
 2 files changed, 5 insertions(+), 16 deletions(-)
 create mode 100644 changes/changelog.d/599.bugfix

diff --git a/changes/changelog.d/599.bugfix b/changes/changelog.d/599.bugfix
new file mode 100644
index 00000000..46d44065
--- /dev/null
+++ b/changes/changelog.d/599.bugfix
@@ -0,0 +1 @@
+Fixed wrong album/track count on artist page (#599)
diff --git a/front/src/components/library/Artist.vue b/front/src/components/library/Artist.vue
index 7a3c1f7c..953cea28 100644
--- a/front/src/components/library/Artist.vue
+++ b/front/src/components/library/Artist.vue
@@ -94,6 +94,8 @@ export default {
       isLoadingAlbums: true,
       artist: null,
       albums: null,
+      totalTracks: 0,
+      totalAlbums: 0,
       tracks: []
     }
   },
@@ -107,12 +109,14 @@ export default {
       logger.default.debug('Fetching artist "' + this.id + '"')
       axios.get('tracks/', {params: {artist: this.id}}).then((response) => {
         self.tracks = response.data.results
+        self.totalTracks = response.data.count
       })
       axios.get('artists/' + this.id + '/').then((response) => {
         self.artist = response.data
         self.isLoading = false
         self.isLoadingAlbums = true
         axios.get('albums/', {params: {artist: self.id, ordering: '-release_date'}}).then((response) => {
+          self.totalAlbums = response.data.count
           let parsed = JSON.parse(JSON.stringify(response.data.results))
           self.albums = parsed.map((album) => {
             return backend.Album.clean(album)
@@ -129,22 +133,6 @@ export default {
         title: this.$gettext('Artist')
       }
     },
-    totalAlbums () {
-      let trackAlbums = _.uniqBy(this.tracks, (t) => {
-        return t.album.id
-      })
-      return this.albums.length + trackAlbums.length
-    },
-    totalTracks () {
-      if (this.albums.length === 0) {
-        return 0 + this.tracks.length
-      }
-      return this.albums.map((album) => {
-        return album.tracks.length
-      }).reduce((a, b) => {
-        return a + b
-      }) + this.tracks.length
-    },
     isPlayable () {
       return this.artist.albums.filter((a) => {
         return a.is_playable
-- 
GitLab