mirror of
https://github.com/logseq/logseq.git
synced 2026-04-29 00:24:51 +00:00
fix: add timestamps for whiteboard blocks
This commit is contained in:
@@ -29,18 +29,25 @@
|
||||
:block/properties {:ls-type :whiteboard-page
|
||||
:logseq.tldraw.page (dissoc tldr-data :shapes)}}
|
||||
(when page-entity (select-keys page-entity [:block/created-at])))
|
||||
page-block (outliner/block-with-timestamps page-block)
|
||||
;; todo: use get-paginated-blocks instead?
|
||||
existing-blocks (model/get-page-blocks-no-cache (state/get-current-repo)
|
||||
page-name
|
||||
{:pull-keys '[:db/id
|
||||
:block/uuid
|
||||
:block/properties [:ls-type]
|
||||
:block/created-at
|
||||
:block/updated-at
|
||||
{:block/parent [:block/uuid]}]})
|
||||
id->block (zipmap (map :block/uuid existing-blocks) existing-blocks)
|
||||
shapes (:shapes tldr-data)
|
||||
;; we should maintain the order of the shapes in the page
|
||||
;; bring back/forward is depending on this ordering
|
||||
blocks (map-indexed (fn [idx shape] (shape->block shape page-name idx)) shapes)
|
||||
blocks (map-indexed
|
||||
(fn [idx shape]
|
||||
(let [block (shape->block shape page-name idx)]
|
||||
(merge block
|
||||
(select-keys (id->block (:block/uuid block))
|
||||
[:block/created-at :block/updated-at])))) shapes)
|
||||
block-ids (->> shapes
|
||||
(map (fn [shape] (when (= (:blockType shape) "B")
|
||||
(uuid (:pageId shape)))))
|
||||
@@ -50,15 +57,17 @@
|
||||
;; delete blocks when all of the following are false
|
||||
;; - the block is not in the new blocks list
|
||||
;; - the block's parent is not in the new block list
|
||||
;; - the block is not a shape block
|
||||
;; - the block is not a shape block
|
||||
delete-blocks (filterv (fn [block]
|
||||
(not
|
||||
(or (block-ids (:block/uuid block))
|
||||
(block-ids (:block/uuid (:block/parent block)))
|
||||
(not (gp-whiteboard/shape-block? block)))))
|
||||
existing-blocks)
|
||||
delete-blocks-tx (mapv (fn [s] [:db/retractEntity (:db/id s)]) delete-blocks)]
|
||||
(concat [page-block] blocks delete-blocks-tx)))
|
||||
delete-blocks-tx (mapv (fn [s] [:db/retractEntity (:db/id s)]) delete-blocks)
|
||||
page-and-blocks (->> (cons page-block blocks)
|
||||
(map outliner/block-with-timestamps))]
|
||||
(concat page-and-blocks delete-blocks-tx)))
|
||||
|
||||
(defn- get-whiteboard-clj [page-name]
|
||||
(when (model/page-exists? page-name)
|
||||
@@ -147,7 +156,7 @@
|
||||
api (.-api app)
|
||||
point (-> (.getShapeById app source-shape)
|
||||
(.-bounds)
|
||||
((fn [bounds] (if bottom?
|
||||
((fn [bounds] (if bottom?
|
||||
[(.-minX bounds) (+ 64 (.-maxY bounds))]
|
||||
[(+ 64 (.-maxX bounds)) (.-minY bounds)]))))
|
||||
shape (->logseq-portal-shape block-uuid point)]
|
||||
@@ -206,4 +215,4 @@
|
||||
(defn closest-shape
|
||||
[target]
|
||||
(when-let [shape-el (dom/closest target "[data-shape-id]")]
|
||||
(.getAttribute shape-el "data-shape-id")))
|
||||
(.getAttribute shape-el "data-shape-id")))
|
||||
|
||||
Reference in New Issue
Block a user