« get me outta code hell

content: generate{Album,Track}?SocialEmbed - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies/generateTrackInfoPage.js
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2023-08-02 18:04:17 -0300
committer(quasar) nebula <qznebula@protonmail.com>2023-08-02 18:04:17 -0300
commite2cdee25fa4d7464f8429a951fe368b96ee48834 (patch)
tree1b40bd2fa1df70918fa58550177f3e6d75ecf1b6 /src/content/dependencies/generateTrackInfoPage.js
parentcadeb88fac5d121d13ef517a043c0577d3e8b880 (diff)
content: generate{Album,Track}?SocialEmbed
Diffstat (limited to 'src/content/dependencies/generateTrackInfoPage.js')
-rw-r--r--src/content/dependencies/generateTrackInfoPage.js62
1 files changed, 6 insertions, 56 deletions
diff --git a/src/content/dependencies/generateTrackInfoPage.js b/src/content/dependencies/generateTrackInfoPage.js
index b5ecb3b..4487bca 100644
--- a/src/content/dependencies/generateTrackInfoPage.js
+++ b/src/content/dependencies/generateTrackInfoPage.js
@@ -21,6 +21,7 @@ export default {
     'generateTrackList',
     'generateTrackListDividedByGroups',
     'generateTrackReleaseInfo',
+    'generateTrackSocialEmbed',
     'linkAlbum',
     'linkArtist',
     'linkContribution',
@@ -49,6 +50,9 @@ export default {
     relations.albumStyleRules =
       relation('generateAlbumStyleRules', track.album);
 
+    relations.socialEmbed =
+      relation('generateTrackSocialEmbed', track);
+
     relations.artistChronologyContributions =
       getChronologyRelations(track, {
         contributions: [...track.artistContribs, ...track.contributorContribs],
@@ -549,6 +553,8 @@ export default {
           }),
 
         ...relations.sidebar,
+
+        socialEmbed: relations.socialEmbed,
       });
   },
 };
@@ -587,45 +593,9 @@ export default {
     }),
   };
 
-  const getSocialEmbedDescription = ({
-    getArtistString: _getArtistString,
-    language,
-  }) => {
-    const hasArtists = !empty(track.artistContribs);
-    const hasCoverArtists = !empty(track.coverArtistContribs);
-    const getArtistString = (contribs) =>
-      _getArtistString(contribs, {
-        // We don't want to put actual HTML tags in social embeds (sadly
-        // they don't get parsed and displayed, generally speaking), so
-        // override the link argument so that artist "links" just show
-        // their names.
-        link: {artist: (artist) => artist.name},
-      });
-    if (!hasArtists && !hasCoverArtists) return '';
-    return language.formatString(
-      'trackPage.socialEmbed.body' +
-        [hasArtists && '.withArtists', hasCoverArtists && '.withCoverArtists']
-          .filter(Boolean)
-          .join(''),
-      Object.fromEntries(
-        [
-          hasArtists && ['artists', getArtistString(track.artistContribs)],
-          hasCoverArtists && [
-            'coverArtists',
-            getArtistString(track.coverArtistContribs),
-          ],
-        ].filter(Boolean)
-      )
-    );
-  };
-
   const page = {
     page: () => {
       return {
-        title: language.$('trackPage.title', {track: track.name}),
-        stylesheet: getAlbumStylesheet(album, {to}),
-
-        themeColor: track.color,
         theme:
           getThemeString(track.color, {
             additionalVariables: [
@@ -633,26 +603,6 @@ export default {
               `--track-directory: ${track.directory}`,
             ]
           }),
-
-        socialEmbed: {
-          heading: language.$('trackPage.socialEmbed.heading', {
-            album: track.album.name,
-          }),
-          headingLink: absoluteTo('localized.album', album.directory),
-          title: language.$('trackPage.socialEmbed.title', {
-            track: track.name,
-          }),
-          description: getSocialEmbedDescription({getArtistString, language}),
-          image: '/' + getTrackCover(track, {to: urls.from('shared.root').to}),
-          color: track.color,
-        },
-
-        secondaryNav: generateAlbumSecondaryNav(album, track, {
-          getLinkThemeString,
-          html,
-          language,
-          link,
-        }),
       };
     },
   };