mirror of
https://github.com/logseq/logseq.git
synced 2026-05-24 12:44:22 +00:00
Move cut-paste? logic to paste handler
This commit is contained in:
@@ -1959,15 +1959,6 @@
|
||||
(let [ids (set (map :db/id blocks))]
|
||||
(some? (some #(ids (:db/id (:block/parent %))) blocks))))
|
||||
|
||||
(defn- get-revert-cut-tx
|
||||
[blocks]
|
||||
(let [{:keys [retracted-block-ids revert-tx]} (get-in @state/state [:editor/last-replace-ref-content-tx (state/get-current-repo)])
|
||||
recent-cut-block-ids (->> retracted-block-ids (map second) (set))]
|
||||
(state/set-state! [:editor/last-replace-ref-content-tx (state/get-current-repo)] nil)
|
||||
(when (and (= (set (map :block/uuid blocks)) recent-cut-block-ids)
|
||||
(seq revert-tx))
|
||||
revert-tx)))
|
||||
|
||||
(defn paste-blocks
|
||||
"Given a vec of blocks, insert them into the target page.
|
||||
keep-uuid?: if true, keep the uuid provided in the block structure."
|
||||
@@ -1975,7 +1966,9 @@
|
||||
exclude-properties
|
||||
target-block
|
||||
sibling?
|
||||
keep-uuid?]
|
||||
keep-uuid?
|
||||
cut-paste?
|
||||
revert-cut-txs]
|
||||
:or {exclude-properties []}}]
|
||||
(let [editing-block (when-let [editing-block (state/get-edit-block)]
|
||||
(some-> (db/pull [:block/uuid (:block/uuid editing-block)])
|
||||
@@ -1990,9 +1983,6 @@
|
||||
empty-target? (string/blank? (:block/content target-block))
|
||||
paste-nested-blocks? (nested-blocks blocks)
|
||||
target-block-has-children? (db/has-children? (:block/uuid target-block))
|
||||
revert-cut-txs (get-revert-cut-tx blocks)
|
||||
cut-paste? (seq revert-cut-txs)
|
||||
keep-uuid? (if cut-paste? true keep-uuid?)
|
||||
replace-empty-target? (if (and paste-nested-blocks? empty-target? target-block-has-children?)
|
||||
false
|
||||
true)
|
||||
|
||||
@@ -105,6 +105,15 @@
|
||||
[text]
|
||||
(boolean (util/safe-re-find #"(?m)^\s*\*+\s+" text)))
|
||||
|
||||
(defn- get-revert-cut-tx
|
||||
"Get reverted previous cut tx when paste"
|
||||
[blocks]
|
||||
(let [{:keys [retracted-block-ids revert-tx]} (get-in @state/state [:editor/last-replace-ref-content-tx (state/get-current-repo)])
|
||||
recent-cut-block-ids (->> retracted-block-ids (map second) (set))]
|
||||
(state/set-state! [:editor/last-replace-ref-content-tx (state/get-current-repo)] nil)
|
||||
(when (= (set (map :block/uuid blocks)) recent-cut-block-ids)
|
||||
(seq revert-tx))))
|
||||
|
||||
(defn- paste-copied-blocks-or-text
|
||||
;; todo: logseq/whiteboard-shapes is now text/html
|
||||
[text e html]
|
||||
@@ -120,7 +129,12 @@
|
||||
(commands/simple-insert! input-id text nil)))
|
||||
internal-paste? (seq copied-blocks)]
|
||||
(if internal-paste?
|
||||
(editor-handler/paste-blocks copied-blocks {})
|
||||
(let [revert-cut-tx (get-revert-cut-tx copied-blocks)
|
||||
cut-paste? (boolean (seq revert-cut-tx))
|
||||
keep-uuid? cut-paste?]
|
||||
(editor-handler/paste-blocks copied-blocks {:revert-cut-tx revert-cut-tx
|
||||
:cut-paste? cut-paste?
|
||||
:keep-uuid? keep-uuid?}))
|
||||
(let [shape-refs-text (when (and (not (string/blank? html))
|
||||
(get-whiteboard-tldr-from-text html))
|
||||
;; text should always be prepared block-ref generated in tldr
|
||||
|
||||
Reference in New Issue
Block a user