From 28ecf1b7ad8a39783a0dd65f84dbffe05f1de44b Mon Sep 17 00:00:00 2001
From: "(quasar) nebula" <qznebula@protonmail.com>
Date: Mon, 31 Mar 2025 16:03:21 -0300
Subject: data: Track.hasUniqueCoverArt: detect contribs on trackArtwork

---
 .../things/track/withHasUniqueCoverArt.js          | 36 ++++++++++++++++++++--
 1 file changed, 34 insertions(+), 2 deletions(-)

(limited to 'src/data')

diff --git a/src/data/composite/things/track/withHasUniqueCoverArt.js b/src/data/composite/things/track/withHasUniqueCoverArt.js
index f7e65f25..2ea845f6 100644
--- a/src/data/composite/things/track/withHasUniqueCoverArt.js
+++ b/src/data/composite/things/track/withHasUniqueCoverArt.js
@@ -9,6 +9,8 @@
 import {input, templateCompositeFrom} from '#composite';
 import {empty} from '#sugar';
 
+import {raiseOutputWithoutDependency} from '#composite/control-flow';
+import {withPropertyFromObject} from '#composite/data';
 import {withResolvedContribs} from '#composite/wiki-data';
 
 import withPropertyFromAlbum from './withPropertyFromAlbum.js';
@@ -55,9 +57,39 @@ export default templateCompositeFrom({
       compute: (continuation, {
         ['#album.trackCoverArtistContribs']: contribsFromAlbum,
       }) =>
-        continuation.raiseOutput({
+        (empty(contribsFromAlbum)
+          ? continuation()
+          : continuation.raiseOutput({
+              ['#hasUniqueCoverArt']:
+                !empty(contribsFromAlbum),
+            })),
+    },
+
+    withPropertyFromObject({
+      object: 'trackArtwork',
+      property: input.value('artistContribs'),
+      internal: input.value(true),
+    }),
+
+    raiseOutputWithoutDependency({
+      dependency: '#trackArtwork.artistContribs',
+      mode: input.value('empty'),
+      output: input.value({'#hasUniqueCoverArt': false}),
+    }),
+
+    withResolvedContribs({
+      from: '#trackArtwork.artistContribs',
+      date: input.value(null),
+    }),
+
+    {
+      dependencies: ['#resolvedContribs'],
+      compute: (continuation, {
+        ['#resolvedContribs']: contribsFromArtwork,
+      }) =>
+        continuation({
           ['#hasUniqueCoverArt']:
-            !empty(contribsFromAlbum),
+            !empty(contribsFromArtwork),
         }),
     },
   ],
-- 
cgit 1.3.0-6-gf8a5