« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/data/things/Track.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/data/things/Track.js')
-rw-r--r--src/data/things/Track.js24
1 files changed, 13 insertions, 11 deletions
diff --git a/src/data/things/Track.js b/src/data/things/Track.js
index 785d0080..c47729e9 100644
--- a/src/data/things/Track.js
+++ b/src/data/things/Track.js
@@ -10,6 +10,7 @@ import Thing from '#thing';
 import {compareKebabCase} from '#wiki-data';
 
 import {
+  anyOf,
   is,
   isBoolean,
   isColor,
@@ -36,8 +37,10 @@ import {
   parseDimensions,
   parseDuration,
   parseLyrics,
+  parseMidiProjectFiles,
   parseMusicVideos,
   parseReferencingSources,
+  parseSheetMusicFiles,
   parseURLs,
 } from '#yaml';
 
@@ -385,7 +388,10 @@ export class Track extends Thing {
 
     excludingURLs: [
       exposeUpdateValueOrContinue({
-        validate: input.value(isExcludingURLsReason),
+        validate: input.value(
+          anyOf(
+            is(false),
+            isExcludingURLsReason)),
       }),
 
       withPropertyFromObject('trackSection', V('excludingTrackURLs')),
@@ -1119,12 +1125,12 @@ export class Track extends Thing {
 
       'Sheet Music Files': {
         property: 'sheetMusicFiles',
-        transform: parseAdditionalFiles,
+        transform: parseSheetMusicFiles,
       },
 
       'MIDI Project Files': {
         property: 'midiProjectFiles',
-        transform: parseAdditionalFiles,
+        transform: parseMidiProjectFiles,
       },
 
       // Content entries
@@ -1184,9 +1190,9 @@ export class Track extends Thing {
         ],
       },
 
-      {message: `Don't include URLs alongside Excluding URLs`, fields: [
+      {message: `Don't include URLs alongside Excluding URLs, unless Excluding URLs is false`, fields: [
         'URLs',
-        'Excluding URLs',
+        ['Excluding URLs', v => v !== false],
       ]},
     ],
   };
@@ -1365,14 +1371,10 @@ export class Track extends Thing {
     },
   };
 
-  getOwnAdditionalFilePath(_file, filename) {
+  getOwnAdditionalFilePath(file, filename) {
     if (!this.album) return null;
 
-    return [
-      'media.albumAdditionalFile',
-      this.album.directory,
-      filename,
-    ];
+    return this.album.getOwnAdditionalFilePath(file, filename);
   }
 
   getOwnArtworkPath(artwork) {