mirror of
https://github.com/logseq/logseq.git
synced 2026-06-01 19:01:22 +00:00
feat: returns a deferred promise for logseq.db/transact!
This enables callers to wait for the result.
This commit is contained in:
@@ -268,40 +268,44 @@
|
||||
;; :block/uuid might be changed when backspace/delete
|
||||
;; a block that has been refed
|
||||
(assoc :block/uuid (:block/uuid block)))
|
||||
opts' (assoc opts :outliner-op :save-block)]
|
||||
(let [original-block (db/entity (:db/id block))
|
||||
original-props (:block/properties original-block)
|
||||
{:keys [tx-data]}
|
||||
(ui-outliner-tx/transact!
|
||||
opts'
|
||||
(outliner-save-block! block')
|
||||
;; page properties changed
|
||||
(when-let [page-name (and (:block/pre-block? block')
|
||||
(not= original-props (:block/properties block'))
|
||||
(some-> (:block/page block') :db/id (db-utils/pull) :block/name))]
|
||||
(state/set-page-properties-changed! page-name)))
|
||||
[original linked] (when-not (:insert-block? opts)
|
||||
(let [original-block (some (fn [m] (and (map? m) (:block/link m) m)) tx-data)
|
||||
link (:block/link original-block)
|
||||
link' (if (and (map? link) (:db/id link))
|
||||
(db/entity (:db/id link))
|
||||
(db/entity link))]
|
||||
[original-block link']))]
|
||||
opts' (assoc opts :outliner-op :save-block)
|
||||
original-block (db/entity (:db/id block))
|
||||
original-props (:block/properties original-block)]
|
||||
(p/let [{:keys [tx-data] :as result}
|
||||
(ui-outliner-tx/transact!
|
||||
opts'
|
||||
(outliner-save-block! block')
|
||||
;; page properties changed
|
||||
(when-let [page-name (and (:block/pre-block? block')
|
||||
(not= original-props (:block/properties block'))
|
||||
(some-> (:block/page block') :db/id (db-utils/pull) :block/name))]
|
||||
(state/set-page-properties-changed! page-name)))
|
||||
[original linked] (when-not (:insert-block? opts)
|
||||
(let [original-block (some (fn [m] (and (map? m) (:block/link m) m)) tx-data)
|
||||
link (:block/link original-block)
|
||||
link' (if (and (map? link) (:db/id link))
|
||||
(db/entity (:db/id link))
|
||||
(db/entity link))]
|
||||
[original-block link']))]
|
||||
|
||||
;; FIXME move this to pipeline
|
||||
;; Block has been tagged, so we need to edit the linked page now
|
||||
(when (and linked
|
||||
(= (:db/id (state/get-edit-block)) (:db/id original)))
|
||||
(edit-block! linked :max nil {})))
|
||||
(edit-block! linked :max nil {}))
|
||||
|
||||
;; file based graph only
|
||||
;; sanitized page name changed
|
||||
(when-let [title (get-in block' [:block/properties :title])]
|
||||
(if (string? title)
|
||||
(when-let [old-page-name (:block/name (db/entity (:db/id (:block/page block'))))]
|
||||
(when (and (:block/pre-block? block')
|
||||
(not (string/blank? title))
|
||||
(not= (util/page-name-sanity-lc title) old-page-name))
|
||||
(state/pub-event! [:page/title-property-changed old-page-name title true])))
|
||||
(js/console.error (str "Title is not a string: " title))))))))
|
||||
;; file based graph only
|
||||
;; sanitized page name changed
|
||||
(when-let [title (get-in block' [:block/properties :title])]
|
||||
(if (string? title)
|
||||
(when-let [old-page-name (:block/name (db/entity (:db/id (:block/page block'))))]
|
||||
(when (and (:block/pre-block? block')
|
||||
(not (string/blank? title))
|
||||
(not= (util/page-name-sanity-lc title) old-page-name))
|
||||
(state/pub-event! [:page/title-property-changed old-page-name title true])))
|
||||
(js/console.error (str "Title is not a string: " title))))
|
||||
|
||||
result)))))
|
||||
|
||||
;; id: block dom id, "ls-block-counter-uuid"
|
||||
(defn- another-block-with-same-id-exists?
|
||||
|
||||
Reference in New Issue
Block a user