« get me outta code hell

content: linkOtherReleaseOnArtistInfoPage - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2025-02-21 08:24:55 -0400
committer(quasar) nebula <qznebula@protonmail.com>2025-03-02 08:24:13 -0400
commit0bed9ef3384f76421592d8f017d7deaa464fd859 (patch)
treee2810f3186d7a72e3801aeb7d1c5aadc6b0b6113
parent4b9550a2d8dda5d58861c8f2c2c2a7b7ec803059 (diff)
content: linkOtherReleaseOnArtistInfoPage
-rw-r--r--src/content/dependencies/generateArtistInfoPageFirstReleaseTooltip.js31
-rw-r--r--src/content/dependencies/generateArtistInfoPageRereleaseTooltip.js21
-rw-r--r--src/content/dependencies/linkOtherReleaseOnArtistInfoPage.js20
3 files changed, 42 insertions, 30 deletions
diff --git a/src/content/dependencies/generateArtistInfoPageFirstReleaseTooltip.js b/src/content/dependencies/generateArtistInfoPageFirstReleaseTooltip.js
index e5ea3065..231ef340 100644
--- a/src/content/dependencies/generateArtistInfoPageFirstReleaseTooltip.js
+++ b/src/content/dependencies/generateArtistInfoPageFirstReleaseTooltip.js
@@ -2,7 +2,12 @@ import {sortChronologically} from '#sort';
 import {stitchArrays} from '#sugar';
 
 export default {
-  contentDependencies: ['generateColorStyleAttribute', 'generateTooltip'],
+  contentDependencies: [
+    'generateColorStyleAttribute',
+    'generateTooltip',
+    'linkOtherReleaseOnArtistInfoPage',
+  ],
+
   extraDependencies: ['html', 'language'],
 
   query: (track) => ({
@@ -17,10 +22,10 @@ export default {
     firstReleaseColorStyle:
       relation('generateColorStyleAttribute', track.color),
 
-    rereleaseColorStyles:
+    rereleaseLinks:
       query.rereleases
         .map(rerelease =>
-          relation('generateColorStyleAttribute', rerelease.album.color)),
+          relation('linkOtherReleaseOnArtistInfoPage', rerelease)),
   }),
 
   data: (query, track) => ({
@@ -28,10 +33,6 @@ export default {
       track.dateFirstReleased ??
       track.album.date,
 
-    rereleaseAlbumNames:
-      query.rereleases
-        .map(rerelease => rerelease.album.name),
-
     rereleaseDates:
       query.rereleases
         .map(rerelease =>
@@ -53,24 +54,18 @@ export default {
 
         content:
           stitchArrays({
-            colorStyle: relations.rereleaseColorStyles,
-            albumName: data.rereleaseAlbumNames,
-            date: data.rereleaseDates,
-          }).map(({colorStyle, albumName, date}) =>
+            rereleaseLink: relations.rereleaseLinks,
+            rereleaseDate: data.rereleaseDates,
+          }).map(({rereleaseLink, rereleaseDate}) =>
               html.tags([
                 language.$(capsule, 'rerelease', {
                   album:
-                    html.metatag('blockwrap',
-                      html.tag('a',
-                        {href: '#'},
-                        colorStyle.slot('context', 'primary-only'),
-
-                        language.sanitize(albumName))),
+                    html.metatag('blockwrap', rereleaseLink),
                 }),
 
                 html.tag('br'),
 
-                language.formatRelativeDate(date, data.firstReleaseDate, {
+                language.formatRelativeDate(rereleaseDate, data.firstReleaseDate, {
                   considerRoundingDays: true,
                   approximate: true,
                   absolute: true,
diff --git a/src/content/dependencies/generateArtistInfoPageRereleaseTooltip.js b/src/content/dependencies/generateArtistInfoPageRereleaseTooltip.js
index 6600a5c1..8ad2c2b9 100644
--- a/src/content/dependencies/generateArtistInfoPageRereleaseTooltip.js
+++ b/src/content/dependencies/generateArtistInfoPageRereleaseTooltip.js
@@ -1,7 +1,12 @@
 import {sortChronologically} from '#sort';
 
 export default {
-  contentDependencies: ['generateColorStyleAttribute', 'generateTooltip'],
+  contentDependencies: [
+    'generateColorStyleAttribute',
+    'generateTooltip',
+    'linkOtherReleaseOnArtistInfoPage'
+  ],
+
   extraDependencies: ['html', 'language'],
 
   query: (track) => ({
@@ -16,14 +21,11 @@ export default {
     rereleaseColorStyle:
       relation('generateColorStyleAttribute', track.color),
 
-    firstReleaseColorStyle:
-      relation('generateColorStyleAttribute', query.firstRelease.color),
+    firstReleaseLink:
+      relation('linkOtherReleaseOnArtistInfoPage', query.firstRelease),
   }),
 
   data: (query, track) => ({
-    firstReleaseAlbumName:
-      query.firstRelease.album.name,
-
     rereleaseDate:
       track.dateFirstReleased ??
       track.album.date,
@@ -44,12 +46,7 @@ export default {
         content: [
           language.$(capsule, 'firstRelease', {
             album:
-              html.metatag('blockwrap',
-                html.tag('a',
-                  {href: '#'},
-                  relations.firstReleaseColorStyle.slot('context', 'primary-only'),
-
-                  language.sanitize(data.firstReleaseAlbumName))),
+              html.metatag('blockwrap', relations.firstReleaseLink),
           }),
 
           html.tag('br'),
diff --git a/src/content/dependencies/linkOtherReleaseOnArtistInfoPage.js b/src/content/dependencies/linkOtherReleaseOnArtistInfoPage.js
new file mode 100644
index 00000000..d3f7853a
--- /dev/null
+++ b/src/content/dependencies/linkOtherReleaseOnArtistInfoPage.js
@@ -0,0 +1,20 @@
+export default {
+  contentDependencies: ['generateColorStyleAttribute'],
+  extraDependencies: ['html', 'language'],
+
+  relations: (relation, track) => ({
+    colorStyle:
+      relation('generateColorStyleAttribute', track.album.color),
+  }),
+
+  data: (track) => ({
+    albumName:
+      track.album.name,
+  }),
+
+  generate: (data, relations, {html, language}) =>
+    html.tag('a',
+      {href: '#'},
+      relations.colorStyle.slot('context', 'primary-only'),
+      language.sanitize(data.albumName)),
+};