« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/data/things/album.js1
-rw-r--r--src/data/things/track.js43
-rw-r--r--src/data/yaml.js1
-rw-r--r--src/util/wiki-data.js2
4 files changed, 27 insertions, 20 deletions
diff --git a/src/data/things/album.js b/src/data/things/album.js
index d371f51..0c87b7c 100644
--- a/src/data/things/album.js
+++ b/src/data/things/album.js
@@ -104,7 +104,6 @@ export class Album extends Thing {
       update: {validate: isDimensions},
     },
 
-    hasTrackArt: Thing.common.flag(true),
     hasTrackNumbers: Thing.common.flag(true),
     isListedOnHomepage: Thing.common.flag(true),
     isListedInGalleries: Thing.common.flag(true),
diff --git a/src/data/things/track.js b/src/data/things/track.js
index 00585c1..a0a4ff4 100644
--- a/src/data/things/track.js
+++ b/src/data/things/track.js
@@ -1,9 +1,10 @@
 import Thing from './thing.js';
 
 import {inspect} from 'util';
-import {color} from '../../util/cli.js';
 
+import {color} from '../../util/cli.js';
 import find from '../../util/find.js';
+import {empty} from '../../util/sugar.js';
 
 export class Track extends Thing {
   static [Thing.referenceType] = 'track';
@@ -332,36 +333,44 @@ export class Track extends Thing {
     albumData?.find((album) => album.tracks.includes(track));
 
   // Another reused utility function. This one's logic is a bit more complicated.
-  static hasCoverArt = (
+  static hasCoverArt(
     track,
     albumData,
     coverArtistContribsByRef,
     hasCoverArt
-  ) => (
-    hasCoverArt ??
-    (coverArtistContribsByRef?.length > 0 || null) ??
-    Track.findAlbum(track, albumData)?.hasTrackArt ??
-    true
-  );
-
-  // Now this is a doozy!
+  ) {
+    if (!empty(coverArtistContribsByRef)) {
+      return true;
+    }
+
+    const album = Track.findAlbum(track, albumData);
+    if (album && !empty(album.trackCoverArtistContribsByRef)) {
+      return true;
+    }
+
+    return false;
+  }
+
   static hasUniqueCoverArt(
     track,
     albumData,
     coverArtistContribsByRef,
     hasCoverArt
   ) {
-    if (coverArtistContribsByRef?.length > 0) {
+    if (!empty(coverArtistContribsByRef)) {
       return true;
-    } else if (coverArtistContribsByRef) {
-      return false;
-    } else if (hasCoverArt === false) {
+    }
+
+    if (hasCoverArt === false) {
       return false;
-    } else if (Track.findAlbum(track, albumData)?.hasTrackArt) {
+    }
+
+    const album = Track.findAlbum(track, albumData);
+    if (album && !empty(album.trackCoverArtistContribsByRef)) {
       return true;
-    } else {
-      return false;
     }
+
+    return false;
   }
 
   [inspect.custom]() {
diff --git a/src/data/yaml.js b/src/data/yaml.js
index 25dfecb..d8067a4 100644
--- a/src/data/yaml.js
+++ b/src/data/yaml.js
@@ -193,7 +193,6 @@ export const processAlbumDocument = makeProcessDocument(T.Album, {
     color: 'Color',
     urls: 'URLs',
 
-    hasTrackArt: 'Has Track Art',
     hasTrackNumbers: 'Has Track Numbers',
     isListedOnHomepage: 'Listed on Homepage',
     isListedInGalleries: 'Listed in Galleries',
diff --git a/src/util/wiki-data.js b/src/util/wiki-data.js
index 97a3f3e..6930496 100644
--- a/src/util/wiki-data.js
+++ b/src/util/wiki-data.js
@@ -715,7 +715,7 @@ export function getTrackCover(track, {to}) {
   // just inherits the album's own cover art. Note that since cover art isn't
   // guaranteed on albums either, it's possible that this function returns
   // null!
-  if (!track.hasCoverArt) {
+  if (!track.hasUniqueCoverArt) {
     return getAlbumCover(track.album, {to});
   } else {
     return to('media.trackCover', track.album.directory, track.directory, track.coverArtFileExtension);