mirror of
https://github.com/logseq/logseq.git
synced 2026-04-24 14:14:55 +00:00
fix(rtc): skip insert-or-move-block when parent and order both missing
This commit is contained in:
@@ -192,37 +192,41 @@ so need to pull earlier remote-data from websocket."})
|
||||
|
||||
(defn- insert-or-move-block
|
||||
[repo conn block-uuid remote-parents remote-block-order move? op-value]
|
||||
(let [first-remote-parent (first remote-parents)
|
||||
local-parent (when first-remote-parent (d/entity @conn [:block/uuid first-remote-parent]))
|
||||
whiteboard-page-block? (ldb/whiteboard? local-parent)
|
||||
b (d/entity @conn [:block/uuid block-uuid])]
|
||||
(case [whiteboard-page-block? (some? local-parent) (some? remote-block-order)]
|
||||
[false true true]
|
||||
(do (if move?
|
||||
(transact-db! :move-blocks repo conn [b] local-parent {:sibling? false})
|
||||
(transact-db! :insert-blocks repo conn
|
||||
[{:block/uuid block-uuid
|
||||
:block/title ""}]
|
||||
local-parent {:sibling? false :keep-uuid? true}))
|
||||
(transact-db! :update-block-order-directly repo conn block-uuid first-remote-parent remote-block-order))
|
||||
(when (or (seq remote-parents) remote-block-order) ;at least one of parent|order exists
|
||||
(let [first-remote-parent (first remote-parents)
|
||||
local-parent (when first-remote-parent (d/entity @conn [:block/uuid first-remote-parent]))
|
||||
whiteboard-page-block? (ldb/whiteboard? local-parent)
|
||||
b (d/entity @conn [:block/uuid block-uuid])]
|
||||
(case [whiteboard-page-block? (some? local-parent) (some? remote-block-order)]
|
||||
[false true true]
|
||||
(do (if move?
|
||||
(transact-db! :move-blocks repo conn [b] local-parent {:sibling? false})
|
||||
(transact-db! :insert-blocks repo conn
|
||||
[{:block/uuid block-uuid
|
||||
:block/title ""}]
|
||||
local-parent {:sibling? false :keep-uuid? true}))
|
||||
(transact-db! :update-block-order-directly repo conn block-uuid first-remote-parent remote-block-order))
|
||||
|
||||
[false true false]
|
||||
(if move?
|
||||
(transact-db! :move-blocks repo conn [b] local-parent
|
||||
{:sibling? false})
|
||||
(transact-db! :insert-no-order-blocks conn [[block-uuid first-remote-parent]]))
|
||||
[false true false]
|
||||
(if move?
|
||||
(transact-db! :move-blocks repo conn [b] local-parent
|
||||
{:sibling? false})
|
||||
(transact-db! :insert-no-order-blocks conn [[block-uuid first-remote-parent]]))
|
||||
|
||||
[false false true] ;no parent, only update order. e.g. udpate property's order
|
||||
(when (and (empty? remote-parents) move?)
|
||||
(transact-db! :update-block-order-directly repo conn block-uuid nil remote-block-order))
|
||||
[false false true] ;no parent, only update order. e.g. udpate property's order
|
||||
(when (and (empty? remote-parents) move?)
|
||||
(transact-db! :update-block-order-directly repo conn block-uuid nil remote-block-order))
|
||||
|
||||
([true false false] [true false true] [true true false] [true true true])
|
||||
(throw (ex-info "Not implemented yet for whiteboard" {:op-value op-value}))
|
||||
([true false false] [true false true] [true true false] [true true true])
|
||||
(throw (ex-info "Not implemented yet for whiteboard" {:op-value op-value}))
|
||||
|
||||
(throw (ex-info "Don't know where to insert" {:block-uuid block-uuid
|
||||
:remote-parents remote-parents
|
||||
:remote-block-order remote-block-order
|
||||
:op-value op-value})))))
|
||||
(let [e (ex-info "Don't know where to insert" {:block-uuid block-uuid
|
||||
:remote-parents remote-parents
|
||||
:remote-block-order remote-block-order
|
||||
:move? move?
|
||||
:op-value op-value})]
|
||||
(log/error :insert-or-move-block e)
|
||||
(throw e))))))
|
||||
|
||||
(defn- move-ops-map->sorted-move-ops
|
||||
[move-ops-map]
|
||||
|
||||
Reference in New Issue
Block a user