Tienson Qin 3 недель назад
Родитель
Сommit
b3403c3404
1 измененных файлов с 11 добавлено и 4 удалено
  1. 11 4
      deps/outliner/src/logseq/outliner/core.cljs

+ 11 - 4
deps/outliner/src/logseq/outliner/core.cljs

@@ -354,7 +354,7 @@
   (assoc-level-aux tree-vec children-key 1))
 
 (defn- assign-temp-id
-  [db blocks replace-empty-target? target-block]
+  [db blocks target-block replace-empty-target? keep-uuid?]
   (->> blocks
        (map-indexed
         (fn [idx block]
@@ -376,9 +376,16 @@
                                                [?v :block/uuid]]
                                              db
                                              (:db/id target-block))
-                        from-property (:logseq.property/created-from-property target-block)]
+                        from-property (:logseq.property/created-from-property target-block)
+                        db-id (dec (- idx))]
                     (concat
-                     [(cond-> block'
+                     [[:db/retractEntity (:db/id target-block)] ; retract target-block first
+                      (cond-> (assoc block
+                                     :db/id db-id
+                                     :block/uuid (if keep-uuid?
+                                                   (or (:block/uuid block)
+                                                       (common-uuid/gen-uuid))
+                                                   (common-uuid/gen-uuid)))
                         from-property
                         (assoc :logseq.property/created-from-property (:db/id from-property)))]
                      (map (fn [[b a]]
@@ -756,7 +763,7 @@
                            :tx (vec blocks-tx)
                            :blocks (vec blocks)
                            :target-block target-block}))
-          (let [tx (assign-temp-id db blocks-tx replace-empty-target? target-block)
+          (let [tx (assign-temp-id db blocks-tx target-block replace-empty-target? keep-uuid?)
                 old-db-id-blocks (->> (filter :block.temp/use-old-db-id? tx)
                                       (map :block/uuid)
                                       (set))