diff options
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 |
commit | 0bed9ef3384f76421592d8f017d7deaa464fd859 (patch) | |
tree | e2810f3186d7a72e3801aeb7d1c5aadc6b0b6113 | |
parent | 4b9550a2d8dda5d58861c8f2c2c2a7b7ec803059 (diff) |
content: linkOtherReleaseOnArtistInfoPage
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)), +}; |