From 89c6f17283550c551da5242268715645946e550f Mon Sep 17 00:00:00 2001 From: Peng Xiao Date: Wed, 31 Aug 2022 10:17:19 +0800 Subject: [PATCH] fix: exclude whiteboard properties for auto complete --- .../src/logseq/graph_parser/block.cljs | 8 +++++++ .../src/logseq/graph_parser/extract.cljc | 2 +- src/main/frontend/db/model.cljs | 7 +++--- src/main/frontend/handler/whiteboard.cljs | 24 +++++++++++-------- 4 files changed, 27 insertions(+), 14 deletions(-) diff --git a/deps/graph-parser/src/logseq/graph_parser/block.cljs b/deps/graph-parser/src/logseq/graph_parser/block.cljs index e5aa31187..01f67a619 100644 --- a/deps/graph-parser/src/logseq/graph_parser/block.cljs +++ b/deps/graph-parser/src/logseq/graph_parser/block.cljs @@ -20,6 +20,14 @@ (vector? block) (= "Heading" (first block)))) +(defn whiteboard-properties? + [properties] + (and properties + (or (#{:whiteboard-shape :whiteboard-page} (:ls-type properties)) + ;; whiteboard page will have the following properties. We use them as a hint + (and (:assets properties) + (:bindings properties))))) + (defn get-tag [block] (when-let [tag-value (and (vector? block) diff --git a/deps/graph-parser/src/logseq/graph_parser/extract.cljc b/deps/graph-parser/src/logseq/graph_parser/extract.cljc index c2841a248..6eae5c190 100644 --- a/deps/graph-parser/src/logseq/graph_parser/extract.cljc +++ b/deps/graph-parser/src/logseq/graph_parser/extract.cljc @@ -212,7 +212,7 @@ (defn with-whiteboard-block-props [block page-name] (let [shape (:block/properties block) - shape? (= :whiteboard-shape (:ls-type shape)) + shape? (gp-block/whiteboard-properties? shape) default-page-ref {:block/name (gp-util/page-name-sanity-lc page-name)}] (merge (when shape? (merge diff --git a/src/main/frontend/db/model.cljs b/src/main/frontend/db/model.cljs index e9a441ace..777cfedfb 100644 --- a/src/main/frontend/db/model.cljs +++ b/src/main/frontend/db/model.cljs @@ -17,6 +17,7 @@ [logseq.db.default :as default-db] [logseq.db.rules :refer [rules]] [logseq.db.schema :as db-schema] + [logseq.graph-parser.block :as gp-block] [logseq.graph-parser.config :as gp-config] [logseq.graph-parser.text :as text] [logseq.graph-parser.util :as gp-util])) @@ -1354,7 +1355,8 @@ :where [_ :block/properties ?p]] (conn/get-db)) - properties (remove (fn [m] (empty? m)) properties)] + properties (remove (fn [m] (or (empty? m) + (gp-block/whiteboard-properties? m))) properties)] (->> (map keys properties) (apply concat) distinct @@ -1654,8 +1656,7 @@ (defn whiteboard-shape? [block] - (= :whiteboard-shape - (get-in block [:block/properties :ls-type] nil))) + (gp-block/whiteboard-properties? (:properties block))) ;; ;; fixme: caching? ;; (defn get-all-whiteboard-tldrs diff --git a/src/main/frontend/handler/whiteboard.cljs b/src/main/frontend/handler/whiteboard.cljs index 8bc4bd32f..7f2266b9a 100644 --- a/src/main/frontend/handler/whiteboard.cljs +++ b/src/main/frontend/handler/whiteboard.cljs @@ -7,6 +7,7 @@ [frontend.modules.outliner.file :as outliner-file] [frontend.state :as state] [frontend.util :as util] + [logseq.graph-parser.block :as gp-block] [logseq.graph-parser.extract :as gp-extract])) ;; (defn set-linked-page-or-block! @@ -59,7 +60,9 @@ page-entity (model/get-page page-name) page-block (merge {:block/name page-name :block/whiteboard? true - :block/properties (dissoc tldr-data :shapes)} + :block/properties (-> tldr-data + (dissoc :shapes) + (assoc :ls-type :whiteboard-page))} (when page-entity (select-keys page-entity [:block/created-at]))) page-block (outliner/block-with-timestamps page-block) ;; todo: use get-paginated-blocks instead? @@ -99,7 +102,7 @@ (let [id (str (:block/uuid page-block)) shapes (->> blocks (map block->shape) - (filter #(= :whiteboard-shape (:ls-type %))) + (filter gp-block/whiteboard-properties?) (sort-by :index)) page-properties (:block/properties page-block) assets (:assets page-properties) @@ -120,14 +123,15 @@ (defn get-default-tldr [page-id] - #js {:currentPageId page-id, - :selectedIds #js [], - :pages #js [#js {:id page-id, - :name "Page", - :shapes #js [], - :bindings #js {}, - :nonce 1}], - :assets #js []}) + {:currentPageId page-id, + :selectedIds [], + :pages [{:id page-id + :name page-id + :ls-type :whiteboard-page + :shapes [] + :bindings {} + :nonce 1}] + :assets []}) (defn get-whiteboard-entity [page-name] (db-utils/entity [:block/name (util/page-name-sanity-lc page-name)]))