From 3d51b9e53029c3995ad4a90c4dda93bdb696ae29 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Wed, 6 Mar 2024 17:01:02 -0400 Subject: content: gAIPTracksChunkedList: stub separate-components refactor --- .../generateArtistInfoPageTracksChunk.js | 52 ++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/content/dependencies/generateArtistInfoPageTracksChunk.js (limited to 'src/content/dependencies/generateArtistInfoPageTracksChunk.js') diff --git a/src/content/dependencies/generateArtistInfoPageTracksChunk.js b/src/content/dependencies/generateArtistInfoPageTracksChunk.js new file mode 100644 index 00000000..b27a2988 --- /dev/null +++ b/src/content/dependencies/generateArtistInfoPageTracksChunk.js @@ -0,0 +1,52 @@ +import {stitchArrays} from '#sugar'; +import {getTotalDuration} from '#wiki-data'; + +export default { + contentDependencies: [ + 'generateArtistInfoPageChunk', + 'generateArtistInfoPageTracksChunkItem', + 'linkAlbum', + ], + + relations: (relation, artist, album, tracks, contribs) => ({ + template: + relation('generateArtistInfoPageChunk'), + + albumLink: + relation('linkAlbum', album), + + items: + stitchArrays({ + track: tracks, + contribs: contribs, + }).map(({track, contribs}) => + relation('generateArtistInfoPageTracksChunkItem', + artist, + track, + contribs)), + }), + + data: (_artist, album, tracks, _contribs) => ({ + // STUB: This is flat-out incorrect date behavior. + date: + album.date, + + duration: + getTotalDuration(tracks, {originalReleasesOnly: true}), + + durationApproximate: + tracks + .filter(track => track.duration && track.isOriginalRelease) + .length > 1, + }), + + generate: (data, relations) => + relations.template.slots({ + mode: 'album', + albumLink: relations.albumLink, + date: data.date, + duration: data.duration, + durationApproximate: data.durationApproximate, + items: relations.items, + }), +}; -- cgit 1.3.0-6-gf8a5