Browse Source

fix: block uuid changed when embedding a page or a block

Tienson Qin 2 years ago
parent
commit
4296df237d
1 changed files with 9 additions and 7 deletions
  1. 9 7
      src/main/frontend/modules/outliner/core.cljs

+ 9 - 7
src/main/frontend/modules/outliner/core.cljs

@@ -405,13 +405,15 @@
 
 (defn- assign-temp-id
   [blocks replace-empty-target? target-block]
-  (map-indexed (fn [idx block]
-                 ;; TODO: block uuid changed, this could be a problem for rtc
-                 (let [replacing-block? (and replace-empty-target? (zero? idx))
-                       db-id (if replacing-block?
-                               (:db/id target-block)
-                               (dec (- idx)))]
-                   (assoc block :db/id db-id))) blocks))
+  (->> (map-indexed (fn [idx block]
+                  (let [replacing-block? (and replace-empty-target? (zero? idx))]
+                    (if replacing-block?
+                      [[:db/retractEntity (:db/id target-block)] ; retract target-block first
+                       (assoc block
+                              :db/id (or (:db/id block) (dec (- idx)))
+                              :block/left (:db/id (:block/left target-block)))]
+                      [(assoc block :db/id (dec (- idx)))]))) blocks)
+       (apply concat)))
 
 (defn- find-outdented-block-prev-hop
   [outdented-block blocks]