Browse Source

fix: left conflicts when insert template at dummy block

rcmerci 4 years ago
parent
commit
60556964e5
1 changed files with 33 additions and 30 deletions
  1. 33 30
      src/main/frontend/handler/editor.cljs

+ 33 - 30
src/main/frontend/handler/editor.cljs

@@ -1921,35 +1921,36 @@
           has-children? (db/has-children? (state/get-current-repo)
                                           (:block/uuid editing-block))
           collapsed? (:collapsed (:block/properties editing-block))]
-      (match (mapv boolean [dummy? (seq fst-block-text) (seq snd-block-text)
-                           block-self? has-children? (= parent left) collapsed?])
-        ;; if editing-block is dummy, insert after page-block
-        [true _ _ _ _ _ _]
-        [parent-block false]
-
-        ;; when zoom at editing-block
-        [false _ _ true _ _ _]
-        [editing-block false]
-
-        ;; insert after editing-block
-        [false true _ false true _ false]
-        [editing-block false]
-        [false true _ false true _ true]
-        [editing-block true]
-        [false true _ false false _ _]
-        [editing-block true]
-        [false false false false true _ false]
-        [editing-block false]
-        [false false false false true _ true]
-        [editing-block true]
-        [false false false false false _ _]
-        [editing-block true]
-
-        ;; insert before editing-block
-        [false false true false _ true _]
-        [parent-block false]
-        [false false true false _ false _]
-        [left-block true]))))
+      (conj (match (mapv boolean [dummy? (seq fst-block-text) (seq snd-block-text)
+                                  block-self? has-children? (= parent left) collapsed?])
+                   ;; if editing-block is dummy, insert after page-block
+                   [true _ _ _ _ _ _]
+                   [parent-block false]
+
+                   ;; when zoom at editing-block
+                   [false _ _ true _ _ _]
+                   [editing-block false]
+
+                   ;; insert after editing-block
+                   [false true _ false true _ false]
+                   [editing-block false]
+                   [false true _ false true _ true]
+                   [editing-block true]
+                   [false true _ false false _ _]
+                   [editing-block true]
+                   [false false false false true _ false]
+                   [editing-block false]
+                   [false false false false true _ true]
+                   [editing-block true]
+                   [false false false false false _ _]
+                   [editing-block true]
+
+                   ;; insert before editing-block
+                   [false false true false _ true _]
+                   [parent-block false]
+                   [false false true false _ false _]
+                   [left-block true])
+            editing-block))))
 
 (defn- paste-block-tree-at-point
   ([tree exclude-properties] (paste-block-tree-at-point tree exclude-properties nil))
@@ -1959,8 +1960,9 @@
                   (db/entity [:block/original-name (state/get-current-page)])
                   (:block/page (db/entity (:db/id (state/get-edit-block)))))
          file (:block/file page)]
-     (when-let [[target-block sibling?] (get-block-tree-insert-pos-at-point)]
+     (when-let [[target-block sibling? editing-block] (get-block-tree-insert-pos-at-point)]
        (let [target-block (outliner-core/block target-block)
+             editing-block (outliner-core/block editing-block)
              format (or (:block/format target-block) (state/get-preferred-format))
              new-block-uuids (atom #{})
              metadata-replaced-blocks
@@ -2016,6 +2018,7 @@
                                                           :block/meta
                                                           :block/content
                                                           :block/title))))))))))))
+             _ (outliner-core/save-node editing-block)
              _ (outliner-core/insert-nodes metadata-replaced-blocks target-block sibling?)
              new-blocks (db/pull-many repo '[*] (map (fn [id] [:block/uuid id]) @new-block-uuids))]
          (db/refresh! repo {:key :block/insert :data new-blocks}))))))