« get me outta code hell

content, css: gAIPTracksChunkItem: consider credited releases - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies/generateArtistInfoPageRereleaseTooltip.js
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2025-10-25 20:01:33 -0300
committer(quasar) nebula <qznebula@protonmail.com>2025-10-25 20:01:33 -0300
commit3ffa655de14ba931e213dd9f3ea1483dec1cd593 (patch)
treef341fa49a0f096a8f20222d03c4848356a8dbd93 /src/content/dependencies/generateArtistInfoPageRereleaseTooltip.js
parent7feb8a6a0337f6d0621c4e8dc7e3d40c08d7d283 (diff)
content, css: gAIPTracksChunkItem: consider credited releases
Diffstat (limited to 'src/content/dependencies/generateArtistInfoPageRereleaseTooltip.js')
-rw-r--r--src/content/dependencies/generateArtistInfoPageRereleaseTooltip.js41
1 files changed, 35 insertions, 6 deletions
diff --git a/src/content/dependencies/generateArtistInfoPageRereleaseTooltip.js b/src/content/dependencies/generateArtistInfoPageRereleaseTooltip.js
index 70bada19..bf5fe616 100644
--- a/src/content/dependencies/generateArtistInfoPageRereleaseTooltip.js
+++ b/src/content/dependencies/generateArtistInfoPageRereleaseTooltip.js
@@ -1,10 +1,22 @@
 import {sortAlbumsTracksChronologically} from '#sort';
 
 export default {
-  query: (track) => ({
-    firstRelease:
-      sortAlbumsTracksChronologically(track.allReleases)[0],
-  }),
+  query(track, artist) {
+    const query = {};
+
+    query.firstRelease =
+      sortAlbumsTracksChronologically(track.allReleases)[0];
+
+    const contribs = [
+      ...query.firstRelease.artistContribs,
+      ...query.firstRelease.contributorContribs,
+    ];
+
+    query.creditedOnFirstRelease =
+      contribs.some(contrib => contrib.artist === artist);
+
+    return query;
+  },
 
   relations: (relation, query, track, artist) => ({
     tooltip:
@@ -14,10 +26,15 @@ export default {
       relation('generateColorStyleAttribute', track.color),
 
     firstReleaseLink:
-      relation('linkOtherReleaseOnArtistInfoPage', query.firstRelease, artist),
+      (query.creditedOnFirstRelease
+        ? relation('linkOtherReleaseOnArtistInfoPage', query.firstRelease, artist)
+        : relation('linkTrackAsRelease', query.firstRelease)),
   }),
 
-  data: (query, track) => ({
+  data: (query, track, artist) => ({
+    artistName:
+      artist.name,
+
     rereleaseDate:
       track.dateFirstReleased ??
       track.album.date,
@@ -25,6 +42,9 @@ export default {
     firstReleaseDate:
       query.firstRelease.dateFirstReleased ??
       query.firstRelease.album.date,
+
+    creditedOnFirstRelease:
+      query.creditedOnFirstRelease,
   }),
 
   generate: (data, relations, {html, language}) =>
@@ -48,6 +68,15 @@ export default {
             approximate: true,
             absolute: true,
           }),
+
+          !data.creditedOnFirstRelease && [
+            html.tag('hr', {class: 'cute'}),
+
+            html.tag('span', {class: 'not-credited-on-first-release'},
+              language.$(capsule, 'notCreditedOnFirstRelease', {
+                artist: data.artistName,
+              })),
+          ],
         ],
       })),
 };