« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies/generateFlashInfoPage.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/content/dependencies/generateFlashInfoPage.js')
-rw-r--r--src/content/dependencies/generateFlashInfoPage.js81
1 files changed, 35 insertions, 46 deletions
diff --git a/src/content/dependencies/generateFlashInfoPage.js b/src/content/dependencies/generateFlashInfoPage.js
index 095e43c4..935ffdc6 100644
--- a/src/content/dependencies/generateFlashInfoPage.js
+++ b/src/content/dependencies/generateFlashInfoPage.js
@@ -1,22 +1,19 @@
 import {empty} from '#sugar';
 
-export default {
-  contentDependencies: [
-    'generateAdditionalNamesBox',
-    'generateCommentaryEntry',
-    'generateContentHeading',
-    'generateContributionList',
-    'generateFlashActSidebar',
-    'generateFlashArtworkColumn',
-    'generateFlashNavAccent',
-    'generatePageLayout',
-    'generateTrackList',
-    'linkExternal',
-    'linkFlashAct',
-  ],
-
-  extraDependencies: ['html', 'language'],
+function checkInterrupted(which, relations, {html}) {
+  if (
+    !html.isBlank(relations.contributorContributionList) ||
+    !html.isBlank(relations.featuredTracksList)
+  ) return true;
+
+  if (which === 'crediting-sources') {
+    if (!html.isBlank(relations.artistCommentaryEntries)) return true;
+  }
+
+  return false;
+}
 
+export default {
   query(flash) {
     const query = {};
 
@@ -53,6 +50,12 @@ export default {
     contentHeading:
       relation('generateContentHeading'),
 
+    commentaryContentHeading:
+      relation('generateCommentaryContentHeading', flash),
+
+    readCommentaryLine:
+      relation('generateReadCommentaryLine', flash),
+
     flashActLink:
       relation('linkFlashAct', flash.act),
 
@@ -60,7 +63,7 @@ export default {
       relation('generateFlashNavAccent', flash),
 
     featuredTracksList:
-      relation('generateTrackList', flash.featuredTracks),
+      relation('generateTrackList', flash.featuredTracks, []),
 
     contributorContributionList:
       relation('generateContributionList', flash.contributorContribs),
@@ -69,9 +72,10 @@ export default {
       flash.commentary
         .map(entry => relation('generateCommentaryEntry', entry)),
 
-    creditSourceEntries:
-      flash.commentary
-        .map(entry => relation('generateCommentaryEntry', entry)),
+    creditingSourcesSection:
+      relation('generateCollapsedContentEntrySection',
+        flash.creditingSources,
+        flash),
   }),
 
   data: (_query, flash) => ({
@@ -123,21 +127,16 @@ export default {
             {[html.joinChildren]: html.tag('br')},
 
             language.encapsulate('releaseInfo', capsule => [
-              !html.isBlank(relations.artistCommentaryEntries) &&
-                language.encapsulate(capsule, 'readCommentary', capsule =>
-                  language.$(capsule, {
-                    link:
-                      html.tag('a',
-                        {href: '#artist-commentary'},
-                        language.$(capsule, 'link')),
-                  })),
+              checkInterrupted('commentary', relations, {html}) &&
+                relations.readCommentaryLine,
 
-              !html.isBlank(relations.creditSourceEntries) &&
-                language.encapsulate(capsule, 'readCreditSources', capsule =>
+              checkInterrupted('crediting-sources', relations, {html}) &&
+              !html.isBlank(relations.creditingSourcesSection) &&
+                language.encapsulate(capsule, 'readCreditingSources', capsule =>
                   language.$(capsule, {
                     link:
                       html.tag('a',
-                        {href: '#credit-sources'},
+                        {href: '#crediting-sources'},
                         language.$(capsule, 'link')),
                   })),
             ])),
@@ -168,24 +167,14 @@ export default {
           ]),
 
           html.tags([
-            relations.contentHeading.clone()
-              .slots({
-                attributes: {id: 'artist-commentary'},
-                title: language.$('misc.artistCommentary'),
-              }),
-
+            relations.commentaryContentHeading,
             relations.artistCommentaryEntries,
           ]),
 
-          html.tags([
-            relations.contentHeading.clone()
-              .slots({
-                attributes: {id: 'credit-sources'},
-                title: language.$('misc.creditSources'),
-              }),
-
-            relations.creditSourceEntries,
-          ]),
+          relations.creditingSourcesSection.slots({
+            id: 'crediting-sources',
+            string: 'misc.creditingSources',
+          }),
         ],
 
         navLinkStyle: 'hierarchical',