diff options
Diffstat (limited to 'src/content/dependencies/generateNearbyTrackList.js')
| -rw-r--r-- | src/content/dependencies/generateNearbyTrackList.js | 24 |
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, }))), }; |