« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies/generateNearbyTrackList.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/content/dependencies/generateNearbyTrackList.js')
-rw-r--r--src/content/dependencies/generateNearbyTrackList.js24
1 files changed, 21 insertions, 3 deletions
diff --git a/src/content/dependencies/generateNearbyTrackList.js b/src/content/dependencies/generateNearbyTrackList.js
index ebea7206..ff1c969b 100644
--- a/src/content/dependencies/generateNearbyTrackList.js
+++ b/src/content/dependencies/generateNearbyTrackList.js
@@ -1,3 +1,5 @@
+import {stitchArrays} from '#sugar';
+
 export default {
   query: (tracks, contextTrack, _contextContributions) => ({
     presentedTracks:
@@ -14,6 +16,12 @@ export default {
         .map(track => relation('generateTrackListItem', track, contextContributions)),
   }),
 
+  data: (query, _tracks, contextTrack, _contextContributions) => ({
+    presentedTracksMatchContextRelease:
+      query.presentedTracks
+        .map(track => track.album === contextTrack.album),
+  }),
+
   slots: {
     showArtists: {
       validate: v => v.is(true, false, 'auto'),
@@ -36,15 +44,25 @@ export default {
     },
   },
 
-  generate: (relations, slots, {html}) =>
+  generate: (data, relations, slots, {html}) =>
     html.tag('ul',
       {[html.onlyIfContent]: true},
 
-      relations.items.map(item =>
+      stitchArrays({
+        item: relations.items,
+        releasesMatch: data.presentedTracksMatchContextRelease,
+      }).map(({item, releasesMatch}) =>
         item.slots({
           showArtists: slots.showArtists,
           showDuration: slots.showDuration,
-          showDetail: slots.showDetail,
+
+          showDetail:
+            (slots.showDetail && releasesMatch
+              ? 'from within album'
+          : slots.showDetail
+              ? 'from across wiki'
+              : false),
+
           colorMode: slots.colorMode,
         }))),
 };