« get me outta code hell

data: Track: chop withAllReleases - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/data/things/track.js
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2025-11-25 16:15:00 -0400
committer(quasar) nebula <qznebula@protonmail.com>2025-11-25 16:15:00 -0400
commit7cf701e6e44dbbd15694542969b48b6707ab0c24 (patch)
tree6e8ff13580b00a163d4d2faa161c314a0d0aae76 /src/data/things/track.js
parent9c3f0a79ee38ee5a13617ed0406d42e579ed49f3 (diff)
data: Track: chop withAllReleases
Diffstat (limited to 'src/data/things/track.js')
-rw-r--r--src/data/things/track.js39
1 files changed, 36 insertions, 3 deletions
diff --git a/src/data/things/track.js b/src/data/things/track.js
index e957a73f..a8c4f8d9 100644
--- a/src/data/things/track.js
+++ b/src/data/things/track.js
@@ -4,6 +4,7 @@ import CacheableObject from '#cacheable-object';
 import {colors} from '#cli';
 import {input} from '#composite';
 import {onlyItem} from '#sugar';
+import {sortByDate} from '#sort';
 import Thing from '#thing';
 import {getKebabCase} from '#wiki-data';
 
@@ -88,7 +89,6 @@ import {
   exitWithoutUniqueCoverArt,
   inheritContributionListFromMainRelease,
   inheritFromMainRelease,
-  withAllReleases,
   withDirectorySuffix,
   withOtherReleases,
   withPropertyFromAlbum,
@@ -953,8 +953,41 @@ export class Track extends Thing {
     }),
 
     allReleases: [
-      withAllReleases(),
-      exposeDependency({dependency: '#allReleases'}),
+      {
+        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',
+          '#secondaryReleaseTracks',
+        ],
+
+        compute: ({
+          ['#mainReleaseTrack']: mainReleaseTrack,
+          ['#secondaryReleaseTracks']: secondaryReleaseTracks,
+        }) =>
+          sortByDate([mainReleaseTrack, ...secondaryReleaseTracks]),
+      },
     ],
 
     otherReleases: [