|
|
@@ -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)))
|