« get me outta code hell

content: generateTrackListDividedByGroups: inline util function - 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:
author(quasar) nebula <qznebula@protonmail.com>2024-06-09 17:01:36 -0300
committer(quasar) nebula <qznebula@protonmail.com>2024-06-09 17:53:30 -0300
commit36e2006bc9a24918ba886d9cef28d6288bf01c40 (patch)
tree114187513349e965bf0aa5a49bb5f694748390f0 /src/content/dependencies
parent7cf49b34db0a9aeee201594704798b69035c7036 (diff)
content: generateTrackListDividedByGroups: inline util function
Diffstat (limited to 'src/content/dependencies')
-rw-r--r--src/content/dependencies/generateTrackListDividedByGroups.js22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/content/dependencies/generateTrackListDividedByGroups.js b/src/content/dependencies/generateTrackListDividedByGroups.js
index a9326205..5ab53068 100644
--- a/src/content/dependencies/generateTrackListDividedByGroups.js
+++ b/src/content/dependencies/generateTrackListDividedByGroups.js
@@ -1,6 +1,26 @@
 import {empty, stitchArrays} from '#sugar';
 
-import groupTracksByGroup from '../util/groupTracksByGroup.js';
+function groupTracksByGroup(tracks, groups) {
+  const lists = new Map(groups.map(group => [group, []]));
+  lists.set('other', []);
+
+  for (const track of tracks) {
+    const group = groups.find(group => group.albums.includes(track.album));
+    if (group) {
+      lists.get(group).push(track);
+    } else {
+      lists.get('other').push(track);
+    }
+  }
+
+  for (const [key, tracks] of lists.entries()) {
+    if (empty(tracks)) {
+      lists.delete(key);
+    }
+  }
+
+  return lists;
+}
 
 export default {
   contentDependencies: [