« 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
diff options
context:
space:
mode:
Diffstat (limited to 'src/content/dependencies')
-rw-r--r--src/content/dependencies/generateAlbumSidebar.js46
-rw-r--r--src/content/dependencies/generateAlbumSidebarGroupBox.js22
2 files changed, 21 insertions, 47 deletions
diff --git a/src/content/dependencies/generateAlbumSidebar.js b/src/content/dependencies/generateAlbumSidebar.js
index 4eef62b2..bf6b091a 100644
--- a/src/content/dependencies/generateAlbumSidebar.js
+++ b/src/content/dependencies/generateAlbumSidebar.js
@@ -7,44 +7,26 @@ export default {
 
   extraDependencies: ['html'],
 
-  contracts: {
-    relations: {
-      hook(contract, [relation, album, track]) {
-        contract.provide({
-          relation, album, track,
 
-          groups: contract.selectProperty(album, 'groups'),
-          trackSections: contract.selectProperty(album, 'trackSections'),
-        });
-      },
+  relations(relation, album, track) {
+    const relations = {};
 
-      compute({relation, album, track, groups, trackSections}) {
-        const relations = {};
+    relations.albumLink =
+      relation('linkAlbum', album);
 
-        relations.albumLink =
-          relation('linkAlbum', album);
+    relations.groupBoxes =
+      album.groups.map(group =>
+        relation('generateAlbumSidebarGroupBox', album, group));
 
-        relations.groupBoxes =
-          groups.map(group =>
-            relation('generateAlbumSidebarGroupBox', album, group));
+    relations.trackSections =
+      album.trackSections.map(trackSection =>
+        relation('generateAlbumSidebarTrackSection', album, track, trackSection));
 
-        relations.trackSections =
-          trackSections.map(trackSection =>
-            relation('generateAlbumSidebarTrackSection', album, track, trackSection));
-
-        return relations;
-      },
-    },
-
-    data: {
-      hook(contract, [album, track]) {
-        contract.provide({track});
-      },
+    return relations;
+  },
 
-      compute({track}) {
-        return {isAlbumPage: !track};
-      },
-    },
+  data(album, track) {
+    return {isAlbumPage: !track};
   },
 
   generate(data, relations, {html}) {
diff --git a/src/content/dependencies/generateAlbumSidebarGroupBox.js b/src/content/dependencies/generateAlbumSidebarGroupBox.js
index 4e46c931..0679e8fc 100644
--- a/src/content/dependencies/generateAlbumSidebarGroupBox.js
+++ b/src/content/dependencies/generateAlbumSidebarGroupBox.js
@@ -4,28 +4,20 @@ export default {
   contentDependencies: ['linkAlbum', 'linkExternal', 'linkGroup'],
   extraDependencies: ['html', 'language', 'transformMultiline'],
 
-  contracts: {
-    relations(contract, [album, group]) {
-      contract.provide({
-        group, album,
-
-        urls: contract.selectProperty(group, 'urls'),
-        adjacentAlbums: contract.subcontract('adjacentAlbumsInGroup', album, group),
-      });
-    },
-  },
-
-  relations(relation, {group, album, urls, adjacentAlbums}) {
+  relations(relation, album, group) {
     const relations = {};
 
     relations.groupLink =
       relation('linkGroup', group);
 
     relations.externalLinks =
-      urls.map(url =>
-        relation('linkExternal', urls));
+      group.urls.map(url =>
+        relation('linkExternal', url));
 
-    const {previousAlbum, nextAlbum} = adjacentAlbums;
+    const albums = group.albums.filter(album => album.date);
+    const index = albums.indexOf(album);
+    const previousAlbum = (index > 0) && albums[index - 1];
+    const nextAlbum = (index < albums.length - 1) && albums[index + 1];
 
     if (previousAlbum) {
       relations.previousAlbumLink =