« get me outta code hell

content, data: multiple music video URLs, "watch on" line - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/data
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2026-04-06 08:25:54 -0300
committer(quasar) nebula <qznebula@protonmail.com>2026-04-06 08:25:54 -0300
commitcc635018fd28fc0edf95c100fcdc28292dc77384 (patch)
tree734bcd551bdec23952437c5ff9675fe80784d74c /src/data
parentb119249988890273fc4879871eb88decf61a5338 (diff)
content, data: multiple music video URLs, "watch on" line preview
Diffstat (limited to 'src/data')
-rw-r--r--src/data/things/MusicVideo.js27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/data/things/MusicVideo.js b/src/data/things/MusicVideo.js
index 38387a30..c832072b 100644
--- a/src/data/things/MusicVideo.js
+++ b/src/data/things/MusicVideo.js
@@ -23,6 +23,7 @@ import {
   soupyFind,
   soupyReverse,
   thing,
+  urls,
 } from '#composite/wiki-properties';
 
 export class MusicVideo extends Thing {
@@ -65,10 +66,20 @@ export class MusicVideo extends Thing {
       constituteFrom('thing', V('date')),
     ],
 
-    url: {
-      flags: {update: true, expose: true},
-      update: {validate: isURL},
-    },
+    url: [
+      exposeUpdateValueOrContinue({
+        validate: input.value(isURL),
+      }),
+
+      exitWithoutDependency('urls', V(null), V('empty')),
+
+      {
+        dependencies: ['urls'],
+        compute: ({urls}) => urls[0],
+      },
+    ],
+
+    urls: urls(),
 
     coverArtFileExtension: fileExtension(V('jpg')),
     coverArtDimensions: dimensions(),
@@ -114,6 +125,7 @@ export class MusicVideo extends Thing {
       'Directory': {property: 'unqualifiedDirectory'},
       'Date': {property: 'date', transform: parseDate},
       'URL': {property: 'url'},
+      'URLs': {property: 'urls'},
 
       'Cover Art File Extension': {property: 'coverArtFileExtension'},
       'Cover Art Dimensions': {property: 'coverArtDimensions'},
@@ -122,6 +134,13 @@ export class MusicVideo extends Thing {
       'Contributor Style': {property: 'contributorStyle'},
       'Contributors': {property: 'contributorContribs', transform: parseContributors},
     },
+
+    invalidFieldCombinations: [
+      {message: `Specify all URLs on "URLs" field, if specifying multiple`, fields: [
+        'URL',
+        'URLs',
+      ]},
+    ],
   };
 
   static [Thing.reverseSpecs] = {