mirror of https://github.com/logseq/logseq
fix: undo need multiple steps
parent
788dd59c02
commit
f134bf11d9
|
@ -49,7 +49,8 @@
|
|||
[medley.core :as medley]
|
||||
[promesa.core :as p]
|
||||
["/frontend/utils" :as utils]
|
||||
[frontend.mobile.util :as mobile]))
|
||||
[frontend.mobile.util :as mobile]
|
||||
[frontend.modules.outliner.datascript :as ds]))
|
||||
|
||||
;; FIXME: should support multiple images concurrently uploading
|
||||
|
||||
|
@ -467,13 +468,17 @@
|
|||
|
||||
:else
|
||||
(not has-children?))]
|
||||
(let [*blocks (atom [current-node])]
|
||||
(when-not skip-save-current-block?
|
||||
(outliner-core/save-node current-node))
|
||||
(outliner-core/insert-node new-node current-node sibling? {:blocks-atom *blocks
|
||||
:skip-transact? false})
|
||||
{:blocks @*blocks
|
||||
:sibling? sibling?})))
|
||||
(ds/auto-transact!
|
||||
[txs-state (ds/new-outliner-txs-state)]
|
||||
{:outliner-op :save-and-insert-node
|
||||
:skip-transact? false}
|
||||
(let [*blocks (atom [current-node])]
|
||||
(when-not skip-save-current-block?
|
||||
(outliner-core/save-node current-node {:txs-state txs-state}))
|
||||
(outliner-core/insert-node new-node current-node sibling? {:blocks-atom *blocks
|
||||
:txs-state txs-state})
|
||||
{:blocks @*blocks
|
||||
:sibling? sibling?}))))
|
||||
|
||||
(defn- block-self-alone-when-insert?
|
||||
[config uuid]
|
||||
|
|
|
@ -216,11 +216,14 @@
|
|||
sorted-children)))))))))
|
||||
|
||||
(defn save-node
|
||||
[node]
|
||||
{:pre [(tree/satisfied-inode? node)]}
|
||||
(ds/auto-transact!
|
||||
[db (ds/new-outliner-txs-state)] {:outliner-op :save-node}
|
||||
(tree/-save node db)))
|
||||
([node]
|
||||
(save-node node nil))
|
||||
([node {:keys [txs-state]}]
|
||||
(if txs-state
|
||||
(tree/-save node txs-state)
|
||||
(ds/auto-transact!
|
||||
[db (ds/new-outliner-txs-state)] {:outliner-op :save-node}
|
||||
(tree/-save node db)))))
|
||||
|
||||
(defn insert-node-as-first-child
|
||||
"Insert a node as first child."
|
||||
|
@ -282,13 +285,15 @@
|
|||
(defn insert-node
|
||||
([new-node target-node sibling?]
|
||||
(insert-node new-node target-node sibling? nil))
|
||||
([new-node target-node sibling? {:keys [blocks-atom skip-transact?]
|
||||
([new-node target-node sibling? {:keys [blocks-atom skip-transact? txs-state]
|
||||
:or {skip-transact? false}}]
|
||||
(ds/auto-transact!
|
||||
[txs-state (ds/new-outliner-txs-state)]
|
||||
{:outliner-op :insert-node
|
||||
:skip-transact? skip-transact?}
|
||||
(insert-node-aux new-node target-node sibling? txs-state blocks-atom))))
|
||||
(if txs-state
|
||||
(insert-node-aux new-node target-node sibling? txs-state blocks-atom)
|
||||
(ds/auto-transact!
|
||||
[txs-state (ds/new-outliner-txs-state)]
|
||||
{:outliner-op :insert-node
|
||||
:skip-transact? skip-transact?}
|
||||
(insert-node-aux new-node target-node sibling? txs-state blocks-atom)))))
|
||||
|
||||
(defn- walk-&-insert-nodes
|
||||
[loc target-node sibling? transact]
|
||||
|
|
Loading…
Reference in New Issue