From 347b0063794a74712123d02a71f700bdcf345b6b Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Fri, 22 May 2026 10:18:40 -0300 Subject: content: generateAdditionalFilesListChunk: zap artists all or none --- .../generateAdditionalFilesListChunk.js | 51 ++++++++++++++++------ 1 file changed, 38 insertions(+), 13 deletions(-) (limited to 'src/content/dependencies/generateAdditionalFilesListChunk.js') diff --git a/src/content/dependencies/generateAdditionalFilesListChunk.js b/src/content/dependencies/generateAdditionalFilesListChunk.js index a9ae96c3..18d5b894 100644 --- a/src/content/dependencies/generateAdditionalFilesListChunk.js +++ b/src/content/dependencies/generateAdditionalFilesListChunk.js @@ -1,21 +1,46 @@ import {compareArrays, stitchArrays} from '#sugar'; export default { - query: (file) => ({ - contextContribs: - ((file.thing.isTrack && - compareArrays( - file.thing.artistContribs.map(contrib => contrib.artist), - file.thing.album.artistContribs.map(contrib => contrib.artist), - {checkOrder: false})) - - ? file.thing.artistContribs + query(file) { + const query = {}; + const album = + (file.thing.isTrack + ? file.thing.album : file.thing.isAlbum - ? file.thing.artistContribs - - : []), - }), + ? file.thing + : []); + + // Consider all presented additional file lists, not just ones + // of the same type as this chunk/list. + const nearbyAdditionalFiles = + (album + ? [...album.additionalFiles, + ...album.tracks.flatMap(track => [ + ...track.additionalFiles, + ...track.sheetMusicFiles, + ...track.midiProjectFiles, + ])] + : []); + + const contribsMatch = (a, b) => + compareArrays( + a.artistContribs.map(contrib => contrib.artist), + b.artistContribs.map(contrib => contrib.artist), + {checkOrder: false}); + + if ( + nearbyAdditionalFiles.every(x => contribsMatch(x, file)) && + nearbyAdditionalFiles.every(x => contribsMatch(x, x.thing)) && + nearbyAdditionalFiles.every(x => contribsMatch(x, album)) + ) { + query.contextContribs = file.thing.artistContribs; + } else { + query.contextContribs = []; + } + + return query; + }, relations: (relation, query, file) => ({ description: -- cgit 1.3.0-6-gf8a5