« get me outta code hell

util: new sortEntryThingPairs util - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies/generateArtistInfoPageTracksChunkedList.js
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2023-06-26 08:44:44 -0300
committer(quasar) nebula <qznebula@protonmail.com>2023-06-26 08:44:44 -0300
commit160c6c4c92f0c574981bab9fabd5f2d06cb0bf10 (patch)
treeef773399ff6ab47be788913bbcde2f7e8ac45cad /src/content/dependencies/generateArtistInfoPageTracksChunkedList.js
parent1deb589b2e22d92f6488d259ce6196706f1515b1 (diff)
util: new sortEntryThingPairs util
Diffstat (limited to 'src/content/dependencies/generateArtistInfoPageTracksChunkedList.js')
-rw-r--r--src/content/dependencies/generateArtistInfoPageTracksChunkedList.js57
1 files changed, 24 insertions, 33 deletions
diff --git a/src/content/dependencies/generateArtistInfoPageTracksChunkedList.js b/src/content/dependencies/generateArtistInfoPageTracksChunkedList.js
index 27d8a56..0132d7b 100644
--- a/src/content/dependencies/generateArtistInfoPageTracksChunkedList.js
+++ b/src/content/dependencies/generateArtistInfoPageTracksChunkedList.js
@@ -1,26 +1,10 @@
-import {accumulateSum, stitchArrays, unique} from '../../util/sugar.js';
-import {chunkByProperties, sortAlbumsTracksChronologically} from '../../util/wiki-data.js';
+import {accumulateSum, stitchArrays} from '../../util/sugar.js';
 
-// TODO: This obviously needs to be more generalized.
-function sortContributionEntries(entries, sortFunction) {
-  const things = unique(entries.map(({thing}) => thing));
-  sortFunction(things);
-
-  const outputArrays = [];
-  const thingToOutputArray = new Map();
-
-  for (const thing of things) {
-    const array = [];
-    thingToOutputArray.set(thing, array);
-    outputArrays.push(array);
-  }
-
-  for (const entry of entries) {
-    thingToOutputArray.get(entry.thing).push(entry);
-  }
-
-  entries.splice(0, entries.length, ...outputArrays.flat());
-}
+import {
+  chunkByProperties,
+  sortAlbumsTracksChronologically,
+  sortEntryThingPairs,
+} from '../../util/wiki-data.js';
 
 export default {
   contentDependencies: [
@@ -36,27 +20,34 @@ export default {
   query(artist) {
     const entries = [
       ...artist.tracksAsArtist.map(track => ({
-        track,
-        date: track.date,
         thing: track,
-        album: track.album,
-        contribs: track.artistContribs,
+        entry: {
+          track,
+          album: track.album,
+          date: track.date,
+          contribs: track.artistContribs,
+        },
       })),
 
       ...artist.tracksAsContributor.map(track => ({
-        track,
-        date: track.date,
         thing: track,
-        album: track.album,
-        contribs: track.contributorContribs,
+        entry: {
+          track,
+          date: track.date,
+          album: track.album,
+          contribs: track.contributorContribs,
+        },
       })),
     ];
 
-    sortContributionEntries(entries, sortAlbumsTracksChronologically);
+    sortEntryThingPairs(entries, sortAlbumsTracksChronologically);
 
-    const chunks = chunkByProperties(entries, ['album', 'date']);
+    const chunks =
+      chunkByProperties(
+        entries.map(({entry}) => entry),
+        ['album', 'date']);
 
-    return {entries, chunks};
+    return {chunks};
   },
 
   relations(relation, query, artist) {