« 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/generateArtistInfoPageArtworksChunkedList.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/content/dependencies/generateArtistInfoPageArtworksChunkedList.js')
-rw-r--r--src/content/dependencies/generateArtistInfoPageArtworksChunkedList.js32
1 files changed, 23 insertions, 9 deletions
diff --git a/src/content/dependencies/generateArtistInfoPageArtworksChunkedList.js b/src/content/dependencies/generateArtistInfoPageArtworksChunkedList.js
index caefb7a3..75a4aa5a 100644
--- a/src/content/dependencies/generateArtistInfoPageArtworksChunkedList.js
+++ b/src/content/dependencies/generateArtistInfoPageArtworksChunkedList.js
@@ -8,7 +8,7 @@ export default {
     'generateArtistInfoPageArtworksChunk',
   ],
 
-  query(artist) {
+  query(artist, filterEditsForWiki) {
     const query = {};
 
     const allContributions = [
@@ -18,28 +18,36 @@ export default {
       ...artist.trackCoverArtistContributions,
     ];
 
+    const filteredContributions =
+      allContributions
+        .filter(({annotation}) =>
+          (filterEditsForWiki
+            ? annotation?.startsWith(`edits for wiki`)
+            : !annotation?.startsWith(`edits for wiki`)));
+
     sortContributionsChronologically(
-      allContributions,
-      sortAlbumsTracksChronologically);
+      filteredContributions,
+      sortAlbumsTracksChronologically,
+      {getThing: contrib => contrib.thing.thing});
 
     query.contribs =
-      chunkByConditions(allContributions, [
+      chunkByConditions(filteredContributions, [
         ({date: date1}, {date: date2}) =>
           +date1 !== +date2,
-        ({thing: thing1}, {thing: thing2}) =>
+        ({thing: {thing: thing1}}, {thing: {thing: thing2}}) =>
           (thing1.album ?? thing1) !==
           (thing2.album ?? thing2),
       ]);
 
     query.albums =
       query.contribs
-        .map(contribs => contribs[0].thing)
+        .map(contribs => contribs[0].thing.thing)
         .map(thing => thing.album ?? thing);
 
     return query;
   },
 
-  relations: (relation, query, _artist) => ({
+  relations: (relation, query, _artist, _filterEditsForWiki) => ({
     chunkedList:
       relation('generateArtistInfoPageChunkedList'),
 
@@ -51,8 +59,14 @@ export default {
           relation('generateArtistInfoPageArtworksChunk', album, contribs)),
   }),
 
-  generate: (relations) =>
+  data: (_query, _artist, filterEditsForWiki) => ({
+    filterEditsForWiki,
+  }),
+
+  generate: (data, relations) =>
     relations.chunkedList.slots({
-      chunks: relations.chunks,
+      chunks:
+        relations.chunks.map(chunk =>
+          chunk.slot('filterEditsForWiki', data.filterEditsForWiki)),
     }),
 };