From ed72c7d00a12e84efc30f01e8ca6b3e5ac51f4dc Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Wed, 3 Apr 2024 19:08:33 +0800 Subject: [PATCH] fix: whiteboard page properties --- src/main/frontend/handler/whiteboard.cljs | 50 ++++++++++++++++++----- 1 file changed, 39 insertions(+), 11 deletions(-) diff --git a/src/main/frontend/handler/whiteboard.cljs b/src/main/frontend/handler/whiteboard.cljs index ed7f15bc5..173af7170 100644 --- a/src/main/frontend/handler/whiteboard.cljs +++ b/src/main/frontend/handler/whiteboard.cljs @@ -20,6 +20,8 @@ [cljs-bean.core :as bean] [logseq.db.sqlite.util :as sqlite-util])) +;; FIXME: no need to store :logseq.property/ls-type since it's stored already in `:block/type` + (defn js->clj-keywordize [obj] (js->clj obj :keywordize-keys true)) @@ -54,7 +56,24 @@ :name (:block/name page-block) :shapes shapes})]}))) -(defn build-page-block +(defn db-build-page-block + [page-entity page-name tldraw-page assets shapes-index] + (let [get-k #(gobj/get tldraw-page %)] + {:block/original-name page-name + :block/name (util/page-name-sanity-lc page-name) + :block/type "whiteboard" + :logseq.property/ls-type :whiteboard-page + :logseq.property.tldraw/page {:id (get-k "id") + :name (get-k "name") + :bindings (js->clj-keywordize (get-k "bindings")) + :nonce (get-k "nonce") + :assets (js->clj-keywordize assets) + :shapes-index shapes-index} + :block/updated-at (util/time-ms) + :block/created-at (or (:block/created-at page-entity) + (util/time-ms))})) + +(defn file-build-page-block [page-entity page-name tldraw-page assets shapes-index] (let [get-k #(gobj/get tldraw-page %)] {:block/original-name page-name @@ -74,6 +93,13 @@ :block/created-at (or (:block/created-at page-entity) (util/time-ms))})) +(defn build-page-block + [page-entity page-name tldraw-page assets shapes-index] + (let [f (if (config/db-based-graph? (state/get-current-repo)) + db-build-page-block + file-build-page-block)] + (f page-entity page-name tldraw-page assets shapes-index))) + (defn- compute-tx [^js app ^js tl-page new-id-nonces db-id-nonces page-uuid replace?] (let [page-entity (db/get-page page-uuid) @@ -187,16 +213,18 @@ :ls-type :whiteboard-page, :bindings {}, :nonce 1, - :assets []}}] - [#:block{:uuid id - :name (util/page-name-sanity-lc page-name), - :original-name page-name - :type "whiteboard", - :properties properties, - :journal? false - :format :markdown - :updated-at (util/time-ms), - :created-at (util/time-ms)}])) + :assets []}} + m #:block{:uuid id + :name (util/page-name-sanity-lc page-name), + :original-name page-name + :type "whiteboard", + :journal? false + :format :markdown + :updated-at (util/time-ms), + :created-at (util/time-ms)}] + (if (config/db-based-graph? (state/get-current-repo)) + [(merge m properties)] + [(assoc m :block/properties properties)]))) (defn