« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/common-util/wiki-data.js27
-rw-r--r--src/content/dependencies/generateMusicVideoDateLine.js39
2 files changed, 36 insertions, 30 deletions
diff --git a/src/common-util/wiki-data.js b/src/common-util/wiki-data.js
index 42ff677e..ae186065 100644
--- a/src/common-util/wiki-data.js
+++ b/src/common-util/wiki-data.js
@@ -616,3 +616,30 @@ export const albumHasSubstantialCommentaryPage = album =>
     album.tracks
       .flatMap(track => track.commentary)
       .filter(entry => !entry.isWikiEditorCommentary));
+
+export function sameDayAs(givenDate, thing) {
+  if (!givenDate) return null;
+
+  const compare = (a, b) =>
+    a && b &&
+    a.toDateString() === b.toDateString();
+
+  if (thing.isAlbum || thing.isTrack) {
+    const album = thing.isTrack ? thing.album : thing;
+    const track = thing.isTrack ? thing : null;
+
+    if (compare(givenDate, album.date)) {
+      if (album.style === 'single') {
+        return 'single';
+      } else {
+        return 'album';
+      }
+    }
+
+    if (compare(givenDate, track?.date)) {
+      return 'track';
+    }
+  }
+
+  return null;
+}
diff --git a/src/content/dependencies/generateMusicVideoDateLine.js b/src/content/dependencies/generateMusicVideoDateLine.js
index 98992584..7b8b57f7 100644
--- a/src/content/dependencies/generateMusicVideoDateLine.js
+++ b/src/content/dependencies/generateMusicVideoDateLine.js
@@ -1,27 +1,4 @@
-function sameDay(musicVideo, thing) {
-  if (!musicVideo.dateIsSpecified) return null;
-
-  const compare = (a, b) =>
-    a && b &&
-    a.toDateString() === b.toDateString();
-
-  const album = thing.isTrack ? thing.album : thing;
-  const track = thing.isTrack ? thing : null;
-
-  if (compare(musicVideo.date, album.date)) {
-    if (album.style === 'single') {
-      return 'single';
-    } else {
-      return 'album';
-    }
-  }
-
-  if (compare(musicVideo.date, track?.date)) {
-    return 'track';
-  }
-
-  return null;
-}
+import {sameDayAs} from '#wiki-data';
 
 export default {
   data: (musicVideo, thing) => ({
@@ -31,22 +8,24 @@ export default {
     dateIsSpecified:
       musicVideo.dateIsSpecified,
 
-    sameDay:
-      sameDay(musicVideo, thing),
+    sameDayAs:
+      (musicVideo.dateIsSpecified
+        ? sameDayAs(musicVideo.date, thing)
+        : null),
   }),
 
   generate: (data, {language}) =>
     language.encapsulate('misc.musicVideo.date', capsule => [
-      data.sameDay === 'album' &&
+      data.sameDayAs === 'album' &&
         language.$(capsule, 'sameDayAsAlbum'),
 
-      data.sameDay === 'single' &&
+      data.sameDayAs === 'single' &&
         language.$(capsule, 'sameDayAsSingle'),
 
-      data.sameDay === 'track' &&
+      data.sameDayAs === 'track' &&
         language.$(capsule, 'sameDayAsTrack'),
 
-      data.sameDay === null &&
+      data.sameDayAs === null &&
       data.dateIsSpecified &&
         language.$(capsule, {
           date: