diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2024-04-10 20:42:06 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2024-06-18 22:56:06 -0300 |
commit | aba51f9096e656c0f6efc5efceea150b6c960bda (patch) | |
tree | 3c2912cc383b6a5f8fed68bf1da5c79f5fc8f658 /src/content/dependencies/generateArtistInfoPageArtworksChunkItem.js | |
parent | 53eda2cb50292420f115adb2d32627dcca8e19df (diff) |
content: gAIPArtworksChunkedList: general refactor a la tracks
Diffstat (limited to 'src/content/dependencies/generateArtistInfoPageArtworksChunkItem.js')
-rw-r--r-- | src/content/dependencies/generateArtistInfoPageArtworksChunkItem.js | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/content/dependencies/generateArtistInfoPageArtworksChunkItem.js b/src/content/dependencies/generateArtistInfoPageArtworksChunkItem.js new file mode 100644 index 00000000..098b9e8f --- /dev/null +++ b/src/content/dependencies/generateArtistInfoPageArtworksChunkItem.js @@ -0,0 +1,61 @@ +export default { + contentDependencies: [ + 'generateArtistInfoPageChunkItem', + 'generateArtistInfoPageOtherArtistLinks', + 'linkTrack', + ], + + extraDependencies: ['html', 'language'], + + query: (contrib) => ({ + kind: + (contrib.isBannerArtistContribution + ? 'banner' + : contrib.isWallpaperArtistContribution + ? 'wallpaper' + : contrib.isForAlbum + ? 'album-cover' + : 'track-cover'), + }), + + relations: (relation, query, contrib) => ({ + template: + relation('generateArtistInfoPageChunkItem'), + + trackLink: + (query.kind === 'track-cover' + ? relation('linkTrack', contrib.thing) + : null), + + otherArtistLinks: + relation('generateArtistInfoPageOtherArtistLinks', [contrib]), + }), + + data: (query, contrib) => ({ + kind: + query.kind, + + annotation: + contrib.annotation, + }), + + generate: (data, relations, {html, language}) => + relations.template.slots({ + otherArtistLinks: relations.otherArtistLinks, + + annotation: data.annotation, + + content: + (data.kind === 'track-cover' + ? language.$('artistPage.creditList.entry.track', { + track: relations.trackLink, + }) + : html.tag('i', + language.$('artistPage.creditList.entry.album', + { + 'wallpaper': 'wallpaperArt', + 'banner': 'bannerArt', + 'album-cover': 'coverArt', + }[data.kind]))), + }), +}; |