« 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/composite/wiki-properties/hasArtwork.js9
-rw-r--r--src/data/things/album/Album.js33
2 files changed, 37 insertions, 5 deletions
diff --git a/src/data/composite/wiki-properties/hasArtwork.js b/src/data/composite/wiki-properties/hasArtwork.js
index 398766c1..129ca0ab 100644
--- a/src/data/composite/wiki-properties/hasArtwork.js
+++ b/src/data/composite/wiki-properties/hasArtwork.js
@@ -21,6 +21,11 @@ export default templateCompositeFrom({
       validate: strictArrayOf(isThing),
       defaultValue: null,
     }),
+
+    default: input({
+      validate: isBoolean,
+      defaultValue: false,
+    }),
   },
 
   update: {
@@ -49,12 +54,14 @@ export default templateCompositeFrom({
         input('contribs'),
         input('artwork'),
         input('artworks'),
+        input('default'),
       ],
 
       compute({
         [input('contribs')]: contribs,
         [input('artwork')]: artwork,
         [input('artworks')]: artworks,
+        [input('default')]: defaultValue,
       }) {
         if (!empty(contribs)) {
           return true;
@@ -68,7 +75,7 @@ export default templateCompositeFrom({
           return true;
         }
 
-        return false;
+        return defaultValue;
       },
     },
   ],
diff --git a/src/data/things/album/Album.js b/src/data/things/album/Album.js
index e32e8044..1d1e8aac 100644
--- a/src/data/things/album/Album.js
+++ b/src/data/things/album/Album.js
@@ -332,10 +332,24 @@ export class Album extends Thing {
         .call(this, 'Cover Artwork'),
     ],
 
-    hasCoverArt: hasArtwork({
-      contribs: '_coverArtistContribs',
-      artworks: '_coverArtworks',
-    }),
+    hasCoverArt: [
+      {
+        dependencies: ['style'],
+        compute: (continuation, {style}) =>
+          continuation({
+            ['#default']:
+              (style === 'in-game vgm'
+                ? true
+                : false),
+          }),
+      },
+
+      hasArtwork({
+        contribs: '_coverArtistContribs',
+        artworks: '_coverArtworks',
+        default: '#default',
+      }),
+    ],
 
     coverArtistContribs: contributionList({
       date: 'coverArtDate',
@@ -1020,6 +1034,17 @@ export class Album extends Thing {
         'Wallpaper Parts',
         'Wallpaper File Extension',
       ]},
+
+      {
+        message: `Albums of style 'in-game vgm' have cover art by default`,
+
+        fields: [
+          ['Has Cover Art', true],
+          ['Style', 'in-game vgm'],
+        ],
+
+        drop: ['Has Cover Art'],
+      },
     ],
   };