mirror of https://github.com/logseq/logseq
fix(rtc): insert blocks in whiteboard
parent
1b3f4ee17e
commit
0879def32b
|
@ -102,6 +102,10 @@
|
|||
(defmethod transact-db! :raw [_ & args]
|
||||
(apply db/transact! args))
|
||||
|
||||
(defn- whiteboard-page-block?
|
||||
[block]
|
||||
(contains? (set (:block/type block)) "whiteboard"))
|
||||
|
||||
(defn apply-remote-remove-ops
|
||||
[repo remove-ops]
|
||||
(prn :remove-ops remove-ops)
|
||||
|
@ -113,9 +117,11 @@
|
|||
(defn- insert-or-move-block
|
||||
[repo block-uuid remote-parents remote-left-uuid move?]
|
||||
(when (and (seq remote-parents) remote-left-uuid)
|
||||
(let [local-left (db/pull repo '[*] [:block/uuid remote-left-uuid])
|
||||
first-remote-parent (first remote-parents)
|
||||
(let [first-remote-parent (first remote-parents)
|
||||
local-parent (db/pull repo '[*] [:block/uuid first-remote-parent])
|
||||
whiteboard-page-block? (whiteboard-page-block? local-parent)
|
||||
;; when insert blocks in whiteboard, local-left is ignored
|
||||
local-left (when-not whiteboard-page-block? (db/pull repo '[*] [:block/uuid remote-left-uuid]))
|
||||
b {:block/uuid block-uuid}
|
||||
;; b-ent (db/entity repo [:block/uuid (uuid block-uuid-str)])
|
||||
]
|
||||
|
@ -172,6 +178,7 @@
|
|||
(move-ops-map->sorted-move-ops move-ops-map))
|
||||
|
||||
(defn- check-block-pos
|
||||
"NOTE: some blocks don't have :block/left (e.g. whiteboard blocks)"
|
||||
[repo block-uuid remote-parents remote-left-uuid]
|
||||
(let [local-b (db/pull repo '[{:block/left [:block/uuid]}
|
||||
{:block/parent [:block/uuid]}
|
||||
|
@ -182,8 +189,14 @@
|
|||
(nil? local-b)
|
||||
:not-exist
|
||||
|
||||
(not (and (= (:block/uuid (:block/parent local-b)) remote-parent-uuid)
|
||||
(= (:block/uuid (:block/left local-b)) remote-left-uuid)))
|
||||
(and (nil? (:block/left local-b))
|
||||
(not= (:block/uuid (:block/parent local-b)) remote-parent-uuid))
|
||||
;; blocks don't have :block/left
|
||||
:wrong-pos
|
||||
|
||||
(and (:block/left local-b)
|
||||
(or (not= (:block/uuid (:block/parent local-b)) remote-parent-uuid)
|
||||
(not= (:block/uuid (:block/left local-b)) remote-left-uuid)))
|
||||
:wrong-pos
|
||||
:else nil)))
|
||||
|
||||
|
|
Loading…
Reference in New Issue