diff --git a/src/main/frontend/modules/outliner/core.cljs b/src/main/frontend/modules/outliner/core.cljs index 8379e03cc2..eeb2efd25d 100644 --- a/src/main/frontend/modules/outliner/core.cljs +++ b/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]