« get me outta code hell

data: Track.artistContribs: be lazy, like coverArtistContribs - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2023-08-25 13:29:38 -0300
committer(quasar) nebula <qznebula@protonmail.com>2023-09-05 21:02:52 -0300
commitc7d8ab3286854faa2ccf54e84b8efbff43a416fc (patch)
tree64270ab7bcc700430fae8c45c5bac85ef749e221 /src
parentfe9bd87d1e6b71c3019b38ca2f99e0c21d916186 (diff)
data: Track.artistContribs: be lazy, like coverArtistContribs
Diffstat (limited to 'src')
-rw-r--r--src/data/things/track.js25
1 files changed, 17 insertions, 8 deletions
diff --git a/src/data/things/track.js b/src/data/things/track.js
index 5c3a1d46..016f5199 100644
--- a/src/data/things/track.js
+++ b/src/data/things/track.js
@@ -303,25 +303,34 @@ export class Track extends Thing {
     artistContribs: Thing.composite.from(`Track.artistContribs`, [
       Track.composite.inheritFromOriginalRelease({property: 'artistContribs'}),
 
-      Track.composite.withAlbumProperties({properties: ['artistContribs']}),
       Thing.composite.withResolvedContribs({
         from: 'artistContribsByRef',
         to: '#artistContribs',
       }),
 
       {
-        flags: {expose: true},
+        flags: {expose: true, compose: true},
         expose: {
-          dependencies: ['#artistContribs', '#album.artistContribs'],
-          compute: ({
-            '#artistContribs': contribsFromTrack,
-            '#album.artistContribs': contribsFromAlbum,
-          }) =>
+          mapDependencies: {contribsFromTrack: '#artistContribs'},
+          compute: ({contribsFromTrack}, continuation) =>
             (empty(contribsFromTrack)
-              ? contribsFromAlbum
+              ? continuation()
               : contribsFromTrack),
         },
       },
+
+      Track.composite.withAlbumProperties({properties: ['artistContribs']}),
+
+      {
+        flags: {expose: true},
+        expose: {
+          mapDependencies: {contribsFromAlbum: '#album.artistContribs'},
+          compute: ({contribsFromAlbum}) =>
+            (empty(contribsFromAlbum)
+              ? null
+              : contribsFromAlbum),
+        },
+      },
     ]),
 
     contributorContribs: Thing.composite.from(`Track.contributorContribs`, [