diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2025-10-03 15:07:42 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2025-10-03 15:07:42 -0300 |
commit | 9e7807a8500a0208f8f8cbded89dfb06f1e21061 (patch) | |
tree | b398b42b080032ee82bbb181da42d1d2c61d57a5 /src/data/composite | |
parent | bc5e4e37be8b66d99083f26ff0e8b79edf2aa663 (diff) |
data: "Main Release: same name single"
Diffstat (limited to 'src/data/composite')
-rw-r--r-- | src/data/composite/things/track/withMainRelease.js | 41 |
1 files changed, 39 insertions, 2 deletions
diff --git a/src/data/composite/things/track/withMainRelease.js b/src/data/composite/things/track/withMainRelease.js index b1f427eb..f1b0841a 100644 --- a/src/data/composite/things/track/withMainRelease.js +++ b/src/data/composite/things/track/withMainRelease.js @@ -33,20 +33,57 @@ export default templateCompositeFrom({ output: input.value({'#mainRelease': null}), }), + { + dependencies: [input('from'), 'name'], + compute: (continuation, { + [input('from')]: ref, + ['name']: ownName, + }) => + (ref === 'same name single' + ? continuation({ + ['#albumOrTrackReference']: null, + ['#sameNameSingleReference']: ownName, + }) + : continuation({ + ['#albumOrTrackReference']: ref, + ['#sameNameSingleReference']: null, + })), + }, + withResolvedReference({ - ref: input('from'), + ref: '#albumOrTrackReference', find: soupyFind.input('trackMainReleasesOnly'), }).outputs({ '#resolvedReference': '#matchingTrack', }), withResolvedReference({ - ref: input('from'), + ref: '#albumOrTrackReference', find: soupyFind.input('album'), }).outputs({ '#resolvedReference': '#matchingAlbum', }), + withResolvedReference({ + ref: '#sameNameSingleReference', + find: soupyFind.input('albumSinglesOnly'), + }).outputs({ + '#resolvedReference': '#sameNameSingle', + }), + + { + dependencies: ['#sameNameSingle'], + compute: (continuation, { + ['#sameNameSingle']: sameNameSingle, + }) => + (sameNameSingle + ? continuation.raiseOutput({ + ['#mainRelease']: + sameNameSingle, + }) + : continuation()), + }, + { dependencies: [ '#matchingTrack', |