mirror of https://github.com/logseq/logseq
fix(rtc): sync blocks in whiteboards
parent
1b94ec61d1
commit
083618a427
|
@ -142,7 +142,7 @@
|
|||
(prn :apply-remote-remove-ops (:block-uuid op))))))
|
||||
|
||||
(defn- insert-or-move-block
|
||||
[repo block-uuid remote-parents remote-left-uuid move?]
|
||||
[repo block-uuid remote-parents remote-left-uuid move? op-value]
|
||||
(when (and (seq remote-parents) remote-left-uuid)
|
||||
(let [first-remote-parent (first remote-parents)
|
||||
local-parent (db/pull repo '[*] [:block/uuid first-remote-parent])
|
||||
|
@ -179,10 +179,22 @@
|
|||
:block/format :markdown}]
|
||||
local-parent {:sibling? false :keep-uuid? true}))
|
||||
|
||||
([true true false] [true true true])
|
||||
;; Don't need to insert-whiteboard-block here,
|
||||
;; will do :upsert-whiteboard-block in `update-block-attrs`
|
||||
nil
|
||||
[true true false]
|
||||
(when (nil? (:properties op-value))
|
||||
;; when :properties is nil, this block should be treat as normal block
|
||||
(if move?
|
||||
(transact-db! :move-blocks [b] local-parent false)
|
||||
(transact-db! :insert-blocks [{:block/uuid block-uuid :block/content "" :block/format :markdown}]
|
||||
local-parent {:sibling? false :keep-uuid? true})))
|
||||
[true true true]
|
||||
(when (nil? (:properties op-value))
|
||||
(let [sibling? (not= (:block/uuid local-parent) (:block/uuid local-left))]
|
||||
(if move?
|
||||
(transact-db! :move-blocks [b] local-left sibling?)
|
||||
(transact-db! :insert-blocks [{:block/uuid block-uuid :block/content "" :block/format :markdown}]
|
||||
local-left {:sibling? sibling? :keep-uuid? true}))))
|
||||
|
||||
(throw (ex-info "Don't know where to insert" {:block-uuid block-uuid :remote-parents remote-parents
|
||||
:remote-left remote-left-uuid}))))))
|
||||
|
@ -247,7 +259,7 @@
|
|||
(transact-db! :upsert-whiteboard-block repo [(whiteboard-handler/shape->block shape page-name)])))))
|
||||
|
||||
(defn- update-block-attrs
|
||||
[repo block-uuid {:keys [parents properties] :as op-value}]
|
||||
[repo block-uuid {:keys [parents properties content] :as op-value}]
|
||||
(let [key-set (set/intersection
|
||||
(conj rtc-const/general-attr-set :content)
|
||||
(set (keys op-value)))]
|
||||
|
@ -259,9 +271,6 @@
|
|||
(and whiteboard-page-block? properties)
|
||||
(upsert-whiteboard-block repo op-value)
|
||||
|
||||
whiteboard-page-block?
|
||||
nil
|
||||
|
||||
:else
|
||||
(let [b-ent (db/pull repo '[*] [:block/uuid block-uuid])
|
||||
new-block
|
||||
|
@ -301,9 +310,9 @@
|
|||
(let [r (check-block-pos repo self parents left)]
|
||||
(case r
|
||||
:not-exist
|
||||
(insert-or-move-block repo self parents left false)
|
||||
(insert-or-move-block repo self parents left false op-value)
|
||||
:wrong-pos
|
||||
(insert-or-move-block repo self parents left true)
|
||||
(insert-or-move-block repo self parents left true op-value)
|
||||
nil ; do nothing
|
||||
nil)
|
||||
(update-block-attrs repo self op-value)
|
||||
|
@ -318,9 +327,9 @@
|
|||
(let [r (check-block-pos repo self parents left)]
|
||||
(case r
|
||||
:not-exist
|
||||
(insert-or-move-block repo self parents left false)
|
||||
(insert-or-move-block repo self parents left false op-value)
|
||||
:wrong-pos
|
||||
(insert-or-move-block repo self parents left true)
|
||||
(insert-or-move-block repo self parents left true op-value)
|
||||
nil)))
|
||||
(update-block-attrs repo self op-value)
|
||||
(prn :apply-remote-update-ops self)))
|
||||
|
|
Loading…
Reference in New Issue