From 7318aa7dbab75ef53ad2eb5e9d256fd21efdbd7b Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Thu, 7 Mar 2024 12:27:34 -0400 Subject: data: withCoverArtDate refactor, make Album.coverArtDate updatable --- src/data/composite/wiki-data/withCoverArtDate.js | 24 +++++++++++++++++++----- src/data/things/album.js | 4 ++++ 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/data/composite/wiki-data/withCoverArtDate.js b/src/data/composite/wiki-data/withCoverArtDate.js index 7c16ce0f..0c644c77 100644 --- a/src/data/composite/wiki-data/withCoverArtDate.js +++ b/src/data/composite/wiki-data/withCoverArtDate.js @@ -3,6 +3,7 @@ // any coverArtistContribs. import {input, templateCompositeFrom} from '#composite'; +import {isDate} from '#validators'; import {raiseOutputWithoutDependency} from '#composite/control-flow'; @@ -12,6 +13,12 @@ export default templateCompositeFrom({ annotation: `withCoverArtDate`, inputs: { + from: input({ + validate: isDate, + defaultDependency: 'coverArtDate', + acceptsNull: true, + }), + fallback: input({ type: 'boolean', defaultValue: false, @@ -33,14 +40,21 @@ export default templateCompositeFrom({ }), { - dependencies: ['coverArtDate', input('fallback')], + dependencies: [input('from')], + compute: (continuation, { + [input('from')]: from, + }) => + (from + ? continuation.raiseOutput({'#coverArtDate': from}) + : continuation()), + }, + + { + dependencies: [input('fallback')], compute: (continuation, { - ['coverArtDate']: coverArtDate, [input('fallback')]: fallback, }) => - (coverArtDate - ? continuation.raiseOutput({'#coverArtDate': coverArtDate}) - : fallback + (fallback ? continuation() : continuation.raiseOutput({'#coverArtDate': null})), }, diff --git a/src/data/things/album.js b/src/data/things/album.js index b0a46af1..ae5226ba 100644 --- a/src/data/things/album.js +++ b/src/data/things/album.js @@ -80,6 +80,10 @@ export class Album extends Thing { coverArtDate: [ // TODO: Why does this fall back, but Track.coverArtDate doesn't? withCoverArtDate({ + from: input.updateValue({ + validate: isDate, + }), + fallback: input.value(true), }), -- cgit 1.3.0-6-gf8a5