diff options
| author | (quasar) nebula <qznebula@protonmail.com> | 2026-05-22 10:18:40 -0300 |
|---|---|---|
| committer | (quasar) nebula <qznebula@protonmail.com> | 2026-05-22 10:18:40 -0300 |
| commit | 347b0063794a74712123d02a71f700bdcf345b6b (patch) | |
| tree | 8a186473614a35f3d3399c6143029f5ef5094fe0 | |
| parent | b45fb3b7f3585e32488f3e9f37fd675f010d03f3 (diff) | |
content: generateAdditionalFilesListChunk: zap artists all or none
| -rw-r--r-- | src/content/dependencies/generateAdditionalFilesListChunk.js | 51 |
1 files changed, 38 insertions, 13 deletions
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: |