Browse Source

refactor: simplify invoke-hooks-default

rcmerci 9 months ago
parent
commit
2b4a562da1
1 changed files with 12 additions and 9 deletions
  1. 12 9
      src/main/frontend/worker/pipeline.cljs

+ 12 - 9
src/main/frontend/worker/pipeline.cljs

@@ -191,17 +191,20 @@
         (cond->> add-created-by-tx-data
         (cond->> add-created-by-tx-data
           (not (:db/id created-by-ent)) (cons created-by-block))))))
           (not (:db/id created-by-ent)) (cons created-by-block))))))
 
 
+(defn- compute-extra-tx-data
+  [repo conn tx-report]
+  (let [{:keys [db-after tx-data tx-meta]} tx-report
+        display-blocks-tx-data (add-missing-properties-to-typed-display-blocks db-after tx-data)
+        commands-tx (when-not (or (:undo? tx-meta) (:redo? tx-meta) (:rtc-tx? tx-meta))
+                      (commands/run-commands tx-report))
+        insert-templates-tx (insert-tag-templates repo conn tx-report)
+        created-by-tx (add-created-by-ref-hook db-after tx-data tx-meta)]
+    (concat display-blocks-tx-data commands-tx insert-templates-tx created-by-tx)))
+
 (defn- invoke-hooks-default
 (defn- invoke-hooks-default
   [repo conn {:keys [tx-meta] :as tx-report} context]
   [repo conn {:keys [tx-meta] :as tx-report} context]
   (try
   (try
-    (let [display-blocks-tx-data (add-missing-properties-to-typed-display-blocks (:db-after tx-report) (:tx-data tx-report))
-          commands-tx (when-not (or (:undo? tx-meta) (:redo? tx-meta) (:rtc-tx? tx-meta))
-                        (commands/run-commands tx-report))
-          ;; :block/refs relies on those changes
-          ;; idea: implement insert-templates using a command?
-          insert-templates-tx (insert-tag-templates repo conn tx-report)
-          created-by-tx (add-created-by-ref-hook (:db-after tx-report) (:tx-data tx-report) (:tx-meta tx-report))
-          tx-before-refs (concat display-blocks-tx-data commands-tx insert-templates-tx created-by-tx)
+    (let [tx-before-refs (compute-extra-tx-data repo conn tx-report)
           tx-report* (if (seq tx-before-refs)
           tx-report* (if (seq tx-before-refs)
                        (let [result (ldb/transact! conn tx-before-refs {:pipeline-replace? true
                        (let [result (ldb/transact! conn tx-before-refs {:pipeline-replace? true
                                                                         :outliner-op :pre-hook-invoke})]
                                                                         :outliner-op :pre-hook-invoke})]
@@ -227,7 +230,7 @@
           block-refs (when (seq blocks')
           block-refs (when (seq blocks')
                        (rebuild-block-refs repo tx-report* blocks'))
                        (rebuild-block-refs repo tx-report* blocks'))
           refs-tx-report (when (seq block-refs)
           refs-tx-report (when (seq block-refs)
-                           (ldb/transact! conn (concat insert-templates-tx block-refs) {:pipeline-replace? true}))
+                           (ldb/transact! conn block-refs {:pipeline-replace? true}))
           replace-tx (let [db-after (or (:db-after refs-tx-report) (:db-after tx-report*))]
           replace-tx (let [db-after (or (:db-after refs-tx-report) (:db-after tx-report*))]
                        (concat
                        (concat
                         ;; block path refs
                         ;; block path refs