« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/data/things/MusicVideo.js13
-rw-r--r--src/data/things/Track.js59
-rw-r--r--src/data/things/album/Album.js56
3 files changed, 92 insertions, 36 deletions
diff --git a/src/data/things/MusicVideo.js b/src/data/things/MusicVideo.js
index dbb99a7f..18b0c9cd 100644
--- a/src/data/things/MusicVideo.js
+++ b/src/data/things/MusicVideo.js
@@ -163,10 +163,15 @@ export class MusicVideo extends Thing {
     },
 
     invalidFieldCombinations: [
-      {message: `Specify all URLs on "URLs" field, if specifying multiple`, fields: [
-        'URL',
-        'URLs',
-      ]},
+      {
+        message: `Specify all URLs on "URLs" field, if specifying multiple`, fields: [
+          'URL',
+          'URLs',
+        ],
+
+        // Leave it to data processing.
+        drop: [],
+      },
     ],
   };
 
diff --git a/src/data/things/Track.js b/src/data/things/Track.js
index f6b3346c..0806de36 100644
--- a/src/data/things/Track.js
+++ b/src/data/things/Track.js
@@ -1265,20 +1265,38 @@ export class Track extends Thing {
     },
 
     invalidFieldCombinations: [
-      {message: `Secondary releases never count in artist totals`, fields: [
-        'Main Release',
-        'Count In Artist Totals',
-      ]},
+      {
+        message: `Secondary releases never count in artist totals`,
 
-      {message: `Secondary releases inherit references from the main one`, fields: [
-        'Main Release',
-        'Referenced Tracks',
-      ]},
+        fields: [
+          'Main Release',
+          'Count In Artist Totals',
+        ],
 
-      {message: `Secondary releases inherit samples from the main one`, fields: [
-        'Main Release',
-        'Sampled Tracks',
-      ]},
+        drop: ['Count In Artist Totals'],
+      },
+
+      {
+        message: `Secondary releases inherit references from the main one`,
+
+        fields: [
+          'Main Release',
+          'Referenced Tracks',
+        ],
+
+        drop: ['Referenced Tracks'],
+      },
+
+      {
+        message: `Secondary releases inherit samples from the main one`,
+
+        fields: [
+          'Main Release',
+          'Sampled Tracks',
+        ],
+
+        drop: ['Sampled Tracks'],
+      },
 
       {
         message: ({'Has Cover Art': hasCoverArt}) =>
@@ -1290,6 +1308,9 @@ export class Track extends Thing {
           'Has Cover Art',
           'Cover Artists',
         ],
+
+        // We ball - data code handles this as it might.
+        drop: [],
       },
 
       {message: `Only one unique date per track is supported`, fields: [
@@ -1297,10 +1318,16 @@ export class Track extends Thing {
         'Date Posted',
       ]},
 
-      {message: `Don't include URLs alongside Excluding URLs, unless Excluding URLs is false`, fields: [
-        'URLs',
-        ['Excluding URLs', v => v !== false],
-      ]},
+      {
+        message: `Don't include URLs alongside Excluding URLs, unless Excluding URLs is false`,
+
+        fields: [
+          'URLs',
+          ['Excluding URLs', v => v !== false],
+        ],
+
+        drop: ['URLs'],
+      },
     ],
   };
 
diff --git a/src/data/things/album/Album.js b/src/data/things/album/Album.js
index 1d1e8aac..11cae60f 100644
--- a/src/data/things/album/Album.js
+++ b/src/data/things/album/Album.js
@@ -1010,30 +1010,54 @@ export class Album extends Thing {
     },
 
     invalidFieldCombinations: [
-      {message: `Move commentary on singles to the track`, fields: [
-        ['Style', 'single'],
-        'Commentary',
-      ]},
+      {
+        message: `Move commentary on singles to the track`,
 
-      {message: `Move crediting sources on singles to the track`, fields: [
-        ['Style', 'single'],
-        'Crediting Sources',
-      ]},
+        fields: [
+          ['Style', 'single'],
+          'Commentary',
+        ],
 
-      {message: `Move additional names on singles to the track`, fields: [
-        ['Style', 'single'],
-        'Additional Names',
-      ]},
+        drop: ['Commentary'],
+      },
+
+      {
+        message: `Move crediting sources on singles to the track`,
+
+        fields: [
+          ['Style', 'single'],
+          'Crediting Sources',
+        ],
+
+        drop: ['Crediting Sources'],
+      },
+
+      {
+        message: `Move additional names on singles to the track`,
+
+        fields: [
+          ['Style', 'single'],
+          'Additional Names',
+        ],
+
+        drop: ['Additional Names'],
+      },
 
       {message: `Specify one wallpaper style or multiple wallpaper parts, not both`, fields: [
         'Wallpaper Parts',
         'Wallpaper Style',
       ]},
 
-      {message: `Wallpaper file extensions are specified on asset, per part`, fields: [
-        'Wallpaper Parts',
-        'Wallpaper File Extension',
-      ]},
+      {
+        message: `Wallpaper file extensions are specified on asset, per part`,
+
+        fields: [
+          'Wallpaper Parts',
+          'Wallpaper File Extension',
+        ],
+
+        drop: ['Wallpaper File Extension'],
+      },
 
       {
         message: `Albums of style 'in-game vgm' have cover art by default`,