Browse Source

fix: filter out none shapes for tldraw

Peng Xiao 3 years ago
parent
commit
751df3b97d

+ 4 - 3
deps/graph-parser/src/logseq/graph_parser/extract.cljc

@@ -202,9 +202,10 @@
   [block]
   (let [shape (:block/properties block)
         parent (select-keys (:block/page block) [:block/name])]
-    (merge {:block/uuid (uuid (:id shape))}
-           (with-whiteboard-block-refs shape parent)
-           (with-whiteboard-content shape))))
+    (when (= :whiteboard-shape (:ls-type shape))
+      (merge {:block/uuid (uuid (:id shape))}
+             (with-whiteboard-block-refs shape parent)
+             (with-whiteboard-content shape)))))
 
 (defn extract-whiteboard-edn
   "Extracts whiteboard page from given edn file

+ 4 - 5
src/main/frontend/components/block.cljs

@@ -434,9 +434,6 @@
       (fn [e]
         (util/stop e)
         (cond
-          whiteboard-page?
-          (route-handler/redirect-to-whiteboard! page-name)
-
           (gobj/get e "shiftKey")
           (when-let [page-entity (db/entity [:block/name redirect-page-name])]
             (state/sidebar-add-block!
@@ -444,6 +441,9 @@
              (:db/id page-entity)
              :page))
 
+          whiteboard-page?
+          (route-handler/redirect-to-whiteboard! page-name)
+
           (not= redirect-page-name page-name)
           (route-handler/redirect-to-page! redirect-page-name)
 
@@ -567,8 +567,7 @@
             (:block/name page))
 
         (and (not (util/mobile?))
-             (not preview?)
-             (not whiteboard-page?)) ;; TODO: support preview for whiteboard
+             (not preview?)) ;; TODO: support preview for whiteboard
         (page-preview-trigger (assoc config :children inner) page-name)
 
         :else

+ 6 - 2
src/main/frontend/components/page.cljs

@@ -313,7 +313,11 @@
                          "control-show cursor-pointer" "control-hide")}
     (ui/rotating-arrow @*all-collapsed?)]])
 
-(def get-tldraw-preview #(resolve 'frontend.components.whiteboard/tldraw-preview))
+(defn resolve-tldraw-preview []
+  (resolve 'frontend.components.whiteboard/tldraw-preview))
+
+(defn get-tldraw-preview [page-name]
+  ((resolve-tldraw-preview) page-name))
 
 ;; A page is just a logical block
 (rum/defcs page < rum/reactive
@@ -366,7 +370,7 @@
                :class (util/classnames [{:is-journals (or journal? fmt-journal?)}])})
 
        (if whiteboard-page?
-         [:div ((get-tldraw-preview) page-name)]
+         [:div (get-tldraw-preview page-name)]
          [:div.relative
           (when (and (not sidebar?) (not block?))
             [:div.flex.flex-row.space-between

+ 5 - 2
src/main/frontend/handler/whiteboard.cljs

@@ -69,7 +69,8 @@
                     :block/whiteboard? true
                     :block/properties (dissoc tldr-data :shapes)}
         existing-blocks (model/get-page-blocks-no-cache page-name)
-        blocks (mapv #(shape->block % page-name) (:shapes tldr-data))
+        shapes (:shapes tldr-data)
+        blocks (mapv #(shape->block % page-name) shapes)
         block-ids (set (map :block/uuid blocks))
         delete-shapes (filter (fn [shape]
                                 (not (block-ids (:block/uuid shape))))
@@ -85,7 +86,9 @@
 
 (defn- whiteboard-clj->tldr [page-block blocks shape-id]
   (let [id (str (:block/uuid page-block))
-        shapes (map block->shape blocks)
+        shapes (->> blocks 
+                    (map block->shape)
+                    (filter #(= :whiteboard-shape (:ls-type %))))
         page-properties (:block/properties page-block)
         assets (:assets page-properties)
         page-properties (dissoc page-properties :assets)]