« 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/composite/things/track/withAllReleases.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/data/composite/things/track/withAllReleases.js')
-rw-r--r--src/data/composite/things/track/withAllReleases.js43
1 files changed, 25 insertions, 18 deletions
diff --git a/src/data/composite/things/track/withAllReleases.js b/src/data/composite/things/track/withAllReleases.js
index bd54384f..078209a9 100644
--- a/src/data/composite/things/track/withAllReleases.js
+++ b/src/data/composite/things/track/withAllReleases.js
@@ -10,40 +10,47 @@ import {sortByDate} from '#sort';
 
 import {withPropertyFromObject} from '#composite/data';
 
-import withMainReleaseTrack from './withMainReleaseTrack.js';
-
 export default templateCompositeFrom({
   annotation: `withAllReleases`,
 
   outputs: ['#allReleases'],
 
   steps: () => [
-    withMainReleaseTrack({
-      selfIfMain: input.value(true),
-      notFoundValue: input.value([]),
-    }),
-
-    // We don't talk about bruno no no
-    // Yes, this can perform a normal access equivalent to
-    // `this.secondaryReleases` from within a data composition.
-    // Oooooooooooooooooooooooooooooooooooooooooooooooo
-    withPropertyFromObject({
-      object: '#mainReleaseTrack',
-      property: input.value('secondaryReleases'),
-    }),
+    {
+      dependencies: [
+        'mainReleaseTrack',
+        'secondaryReleases',
+        input.myself(),
+      ],
+
+      compute: (continuation, {
+        mainReleaseTrack,
+        secondaryReleases,
+        [input.myself()]: thisTrack,
+      }) =>
+        (mainReleaseTrack
+          ? continuation({
+              ['#mainReleaseTrack']: mainReleaseTrack,
+              ['#secondaryReleaseTracks']: mainReleaseTrack.secondaryReleases,
+            })
+          : continuation({
+              ['#mainReleaseTrack']: thisTrack,
+              ['#secondaryReleaseTracks']: secondaryReleases,
+            })),
+    },
 
     {
       dependencies: [
         '#mainReleaseTrack',
-        '#mainReleaseTrack.secondaryReleases',
+        '#secondaryReleaseTracks',
       ],
 
       compute: (continuation, {
         ['#mainReleaseTrack']: mainReleaseTrack,
-        ['#mainReleaseTrack.secondaryReleases']: secondaryReleases,
+        ['#secondaryReleaseTracks']: secondaryReleaseTracks,
       }) => continuation({
         ['#allReleases']:
-          sortByDate([mainReleaseTrack, ...secondaryReleases]),
+          sortByDate([mainReleaseTrack, ...secondaryReleaseTracks]),
       }),
     },
   ],