« get me outta code hell

data: withReverse{Reference,Contribution}List: better exiting - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/data/composite/wiki-data/withReverseReferenceList.js
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2024-04-24 17:08:45 -0300
committer(quasar) nebula <qznebula@protonmail.com>2024-05-01 07:06:07 -0300
commit85e9eb56addf3396a6fc84addbe79b6493d4a9b3 (patch)
treef4606aa18f6345505e7a17a5b52aaa8b446ce863 /src/data/composite/wiki-data/withReverseReferenceList.js
parentb0ca5254cc40c504af34797a26c79da054e95093 (diff)
data: withReverse{Reference,Contribution}List: better exiting
An existing test for withAlbum (which is semi-newly based on
withUniqueReferencingThing, and thus withReverseReferenceList)
indicates that if we just can't *find* the album in a provided
data array, that's not an exit condition. This commit adapts
withReverseReferencingList to respect that when the data list
is empty.

(Treating an empty array as the same thing as an array that
 isn't provided at all - the existing behavior - is really just
 a bug!)
Diffstat (limited to 'src/data/composite/wiki-data/withReverseReferenceList.js')
-rw-r--r--src/data/composite/wiki-data/withReverseReferenceList.js10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/data/composite/wiki-data/withReverseReferenceList.js b/src/data/composite/wiki-data/withReverseReferenceList.js
index 2d7a421..8cd540a 100644
--- a/src/data/composite/wiki-data/withReverseReferenceList.js
+++ b/src/data/composite/wiki-data/withReverseReferenceList.js
@@ -13,7 +13,8 @@
 
 import {input, templateCompositeFrom} from '#composite';
 
-import {exitWithoutDependency} from '#composite/control-flow';
+import {exitWithoutDependency, raiseOutputWithoutDependency}
+  from '#composite/control-flow';
 
 import inputWikiData from './inputWikiData.js';
 
@@ -34,10 +35,17 @@ export default templateCompositeFrom({
   outputs: ['#reverseReferenceList'],
 
   steps: () => [
+    // Early exit with an empty array if the data list isn't available.
     exitWithoutDependency({
       dependency: input('data'),
       value: input.value([]),
+    }),
+
+    // Raise an empty array (don't early exit) if the data list is empty.
+    raiseOutputWithoutDependency({
+      dependency: input('data'),
       mode: input.value('empty'),
+      output: input.value({'#reverseReferenceList': []}),
     }),
 
     {