« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/data/things/thing.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/data/things/thing.js')
-rw-r--r--src/data/things/thing.js22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/data/things/thing.js b/src/data/things/thing.js
index 111de550..5d14b296 100644
--- a/src/data/things/thing.js
+++ b/src/data/things/thing.js
@@ -250,14 +250,7 @@ export default class Thing extends CacheableObject {
       expose: {
         dependencies: ['artistData', contribsByRefProperty],
         compute: ({artistData, [contribsByRefProperty]: contribsByRef}) =>
-          contribsByRef && artistData
-            ? contribsByRef
-                .map(({who: ref, what}) => ({
-                  who: find.artist(ref, artistData),
-                  what,
-                }))
-                .filter(({who}) => who)
-            : [],
+          Thing.findArtistsFromContribs(contribsByRef, artistData),
       },
     }),
 
@@ -563,5 +556,18 @@ export default class Thing extends CacheableObject {
 
       return constructedDescriptor;
     },
+
+    withDynamicContribs: (contribsByRefProperty, dependencyName) => ({
+      flags: {expose: true, compose: true},
+
+      expose: {
+        dependencies: ['artistData', contribsByRefProperty],
+        compute: ({artistData, [contribsByRefProperty]: contribsByRef}, callback) =>
+          callback({
+            [dependencyName]:
+              Thing.findArtistsFromContribs(contribsByRef, artistData),
+          }),
+      },
+    }),
   };
 }