From 6f2d971dd3902e736406579e96486d599d98529a Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Tue, 26 May 2026 16:43:08 -0300 Subject: data: Album, Track: artistless artworks (Has Cover Art: true, etc) --- src/data/composite/wiki-properties/hasArtwork.js | 95 ++++++++++-------------- 1 file changed, 40 insertions(+), 55 deletions(-) (limited to 'src/data/composite/wiki-properties/hasArtwork.js') diff --git a/src/data/composite/wiki-properties/hasArtwork.js b/src/data/composite/wiki-properties/hasArtwork.js index e403a7e2..398766c1 100644 --- a/src/data/composite/wiki-properties/hasArtwork.js +++ b/src/data/composite/wiki-properties/hasArtwork.js @@ -1,14 +1,7 @@ import {input, templateCompositeFrom, V} from '#composite'; -import {isContributionList, isThing, strictArrayOf} from '#validators'; - -import {fillMissingListItems, withFlattenedList, withPropertyFromList} - from '#composite/data'; - -import { - exitWithoutDependency, - exposeWhetherDependencyAvailable, - withResultOfAvailabilityCheck, -} from '#composite/control-flow'; +import {empty} from '#sugar'; +import {isBoolean, isContributionList, isThing, strictArrayOf} + from '#validators'; export default templateCompositeFrom({ annotation: 'hasArtwork', @@ -30,61 +23,53 @@ export default templateCompositeFrom({ }), }, + update: { + validate: isBoolean, + }, + compose: false, steps: () => [ - withResultOfAvailabilityCheck({ - from: input('contribs'), - mode: input.value('empty'), - }), - { - dependencies: ['#availability'], - compute: (continuation, { - ['#availability']: availability, - }) => - (availability - ? true - : continuation()), + transform(value, continuation) { + if (value === true) { + return true; + } + + if (value === false) { + return false; + } + + return continuation(); + }, }, { - dependencies: [input('artwork'), input('artworks')], - compute: (continuation, { + dependencies: [ + input('contribs'), + input('artwork'), + input('artworks'), + ], + + compute({ + [input('contribs')]: contribs, [input('artwork')]: artwork, [input('artworks')]: artworks, - }) => - continuation({ - ['#artworks']: - (artwork && artworks - ? [artwork, ...artworks] - : artwork - ? [artwork] - : artworks - ? artworks - : []), - }), - }, - - exitWithoutDependency('#artworks', { - value: input.value(false), - mode: input.value('empty'), - }), + }) { + if (!empty(contribs)) { + return true; + } - withPropertyFromList('#artworks', { - property: input.value('artistContribs'), - internal: input.value(true), - }), - - // Since we're getting the update value for each artwork's artistContribs, - // it may not be set at all, and in that case won't be exposing as []. - fillMissingListItems('#artworks.artistContribs', V([])), + if (artwork) { + return true; + } - withFlattenedList('#artworks.artistContribs'), + if (!empty(artworks)) { + return true; + } - exposeWhetherDependencyAvailable({ - dependency: '#flattenedList', - mode: input.value('empty'), - }), + return false; + }, + }, ], -}); \ No newline at end of file +}); -- cgit 1.3.0-6-gf8a5