From 0ee5fb62a6c67548fccd4fc497e28cb03bcee06e Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Sat, 22 Mar 2025 15:30:49 -0300 Subject: data: Contribution: dateless prev/next stays in album bounds --- .../withContainingReverseContributionList.js | 26 +++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/data/composite/things/contribution/withContainingReverseContributionList.js b/src/data/composite/things/contribution/withContainingReverseContributionList.js index dc990ca5..175d6cbb 100644 --- a/src/data/composite/things/contribution/withContainingReverseContributionList.js +++ b/src/data/composite/things/contribution/withContainingReverseContributionList.js @@ -1,6 +1,7 @@ // Get the artist's contribution list containing this property. Although that -// list literally includes both dated and un-dated contributions, here the list -// is filtered including only the matching subset (has dates vs dateless). +// list literally includes both dated and dateless contributions, here, if the +// current contribution is dateless, the list is filtered to only include +// dateless contributions from the same immediately nearby context. import {input, templateCompositeFrom} from '#composite'; @@ -51,9 +52,28 @@ export default templateCompositeFrom({ compute: (continuation, { ['#hasDate']: hasDate, ['#list']: list, + }) => + (hasDate + ? continuation.raiseOutput({ + ['#containingReverseContributionList']: + list.filter(contrib => contrib.date), + }) + : continuation({ + ['#list']: + list.filter(contrib => !contrib.date), + })), + }, + + { + dependencies: ['#list', 'thing'], + compute: (continuation, { + ['#list']: list, + ['thing']: thing, }) => continuation({ ['#containingReverseContributionList']: - list.filter(contribution => !!contribution.date === hasDate), + (thing.album + ? list.filter(contrib => contrib.thing.album === thing.album) + : list), }), }, ], -- cgit 1.3.0-6-gf8a5