fix: Make sure blocks have the same format when dragging to another page

This commit is contained in:
Tienson Qin
2021-11-17 12:13:52 +08:00
parent f990e3ff40
commit e0ced6091d
2 changed files with 9 additions and 7 deletions

View File

@@ -22,10 +22,9 @@
true))))))
(defn move-block
"There can be at least 3 possible situations:
"There can be two possible situations:
1. Move a block in the same file (either top-to-bottom or bottom-to-top).
2. Move a block between two different files.
3. Move a block between two files in different repos.
Notes:
1. Those two blocks might have different formats, e.g. one is `org` and another is `markdown`,

View File

@@ -590,18 +590,21 @@
(tree/-save txs-state)))))))))))))
(defn- set-nodes-page-aux
[node page txs-state]
(let [new-node (update node :data assoc :block/page page)]
[node page page-format txs-state]
(let [new-node (update node :data assoc
:block/page page
:block/format page-format)]
(tree/-save new-node txs-state)
(doseq [n (tree/-get-children new-node)]
(set-nodes-page-aux n page txs-state))))
(set-nodes-page-aux n page page-format txs-state))))
(defn- set-nodes-page
[node target-node txs-state]
(let [page (or (get-in target-node [:data :block/page])
{:db/id (get-in target-node [:data :db/id])}) ; or page block
]
(set-nodes-page-aux node page txs-state)))
page-format (:block/format (db/entity (or (:db/id page) page)))]
(set-nodes-page-aux node page page-format txs-state)))
(defn move-subtree
"Move subtree to a destination position in the relation tree.