« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/data/composite/wiki-data/withRecontextualizedContributionList.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/data/composite/wiki-data/withRecontextualizedContributionList.js')
-rw-r--r--src/data/composite/wiki-data/withRecontextualizedContributionList.js52
1 files changed, 28 insertions, 24 deletions
diff --git a/src/data/composite/wiki-data/withRecontextualizedContributionList.js b/src/data/composite/wiki-data/withRecontextualizedContributionList.js
index 418b346f..1c86c0ab 100644
--- a/src/data/composite/wiki-data/withRecontextualizedContributionList.js
+++ b/src/data/composite/wiki-data/withRecontextualizedContributionList.js
@@ -2,11 +2,10 @@
 // updated to match the current thing. Overwrite the provided dependency.
 // Doesn't do anything if the provided dependency is null.
 
-import CacheableObject from '#cacheable-object';
 import {input, templateCompositeFrom} from '#composite';
 
 import {raiseOutputWithoutDependency} from '#composite/control-flow';
-import {withMappedList} from '#composite/data';
+import {withClonedThings} from '#composite/wiki-data';
 
 export default templateCompositeFrom({
   annotation: `withRecontextualizedContributionList`,
@@ -23,9 +22,25 @@ export default templateCompositeFrom({
   }) => [list],
 
   steps: () => [
-    raiseOutputWithoutDependency({
-      dependency: input('list'),
-    }),
+    // TODO: Is raiseOutputWithoutDependency workable here?
+    // Is it true that not specifying any output wouldn't overwrite
+    // the provided dependency?
+    {
+      dependencies: [
+        input.staticDependency('list'),
+        input('list'),
+      ],
+
+      compute: (continuation, {
+        [input.staticDependency('list')]: dependency,
+        [input('list')]: list,
+      }) =>
+        (list
+          ? continuation()
+          : continuation.raiseOutput({
+              [dependency]: list,
+            })),
+    },
 
     {
       dependencies: [input.myself(), input.thisProperty()],
@@ -41,29 +56,18 @@ export default templateCompositeFrom({
       }),
     },
 
-    {
-      dependencies: ['#assignment'],
-
-      compute: (continuation, {
-        ['#assignment']: assignment,
-      }) => continuation({
-        ['#map']:
-          contrib =>
-            Object.assign(
-              CacheableObject.clone(contrib),
-              assignment),
-      }),
-    },
-
-    withMappedList({
-      list: input('list'),
-      map: '#map',
+    withClonedThings({
+      things: input('list'),
+      assign: '#assignment',
     }).outputs({
-      '#mappedList': '#newContributions',
+      '#clonedThings': '#newContributions',
     }),
 
     {
-      dependencies: [input.staticDependency('list'), '#newContributions'],
+      dependencies: [
+        input.staticDependency('list'),
+        '#newContributions',
+      ],
 
       compute: (continuation, {
         [input.staticDependency('list')]: listDependency,