« get me outta code hell

data: withAlbum: perform proper availability check on album - 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>2023-09-07 14:50:41 -0300
committer(quasar) nebula <qznebula@protonmail.com>2023-09-07 14:50:41 -0300
commitd33effa272c3388640974648fe2888a284c6701c (patch)
tree4649a70ae8c5f1c12c2f9e10de93b4f6ce876a48 /src/data/things/track.js
parenteb00f2993a1aaaba171ad6c918656552f80bb748 (diff)
data: withAlbum: perform proper availability check on album
Diffstat (limited to 'src/data/things/track.js')
-rw-r--r--src/data/things/track.js21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/data/things/track.js b/src/data/things/track.js
index 41c9209..fcfd39c 100644
--- a/src/data/things/track.js
+++ b/src/data/things/track.js
@@ -411,21 +411,34 @@ function withAlbum({
         }),
     },
 
+    withResultOfAvailabilityCheck({
+      fromDependency: '#album',
+      mode: 'null',
+      into: '#albumAvailability',
+    }),
+
     {
-      dependencies: ['#album'],
+      dependencies: ['#albumAvailability'],
       options: {notFoundMode},
       mapContinuation: {into},
 
       compute: ({
-        '#album': album,
+        '#albumAvailability': albumAvailability,
         '#options': {notFoundMode},
       }, continuation) =>
-        (album
-          ? continuation.raise({into: album})
+        (albumAvailability
+          ? continuation()
           : (notFoundMode === 'exit'
               ? continuation.exit(null)
               : continuation.raise({into: null}))),
     },
+
+    {
+      dependencies: ['#album'],
+      mapContinuation: {into},
+      compute: ({'#album': album}, continuation) =>
+        continuation({into: album}),
+    },
   ]);
 }