« get me outta code hell

content: gAIPArtworksChunkedList: general refactor a la tracks - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies/generateArtistInfoPageArtworksChunkItem.js
diff options
context:
space:
mode:
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
commitaba51f9096e656c0f6efc5efceea150b6c960bda (patch)
tree3c2912cc383b6a5f8fed68bf1da5c79f5fc8f658 /src/content/dependencies/generateArtistInfoPageArtworksChunkItem.js
parent53eda2cb50292420f115adb2d32627dcca8e19df (diff)
content: gAIPArtworksChunkedList: general refactor a la tracks
Diffstat (limited to 'src/content/dependencies/generateArtistInfoPageArtworksChunkItem.js')
-rw-r--r--src/content/dependencies/generateArtistInfoPageArtworksChunkItem.js61
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]))),
+    }),
+};