From 0ee5fb62a6c67548fccd4fc497e28cb03bcee06e Mon Sep 17 00:00:00 2001
From: "(quasar) nebula" <qznebula@protonmail.com>
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/data/composite/things/contribution/withContainingReverseContributionList.js')

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