mirror of https://github.com/logseq/logseq
fix: parsing/saving issues on block/refs
parent
dc240de56b
commit
4d42877f3d
|
@ -178,6 +178,25 @@
|
|||
:blocks blocks
|
||||
:ast ast}))))
|
||||
|
||||
(defn get-shape-refs [shape]
|
||||
(when (= "logseq-portal" (:type shape))
|
||||
[{:block/name (:pageId shape)}]))
|
||||
|
||||
(defn- with-whiteboard-block-refs
|
||||
[shape]
|
||||
(let [refs (get-shape-refs shape)]
|
||||
(when refs {:block/refs refs})))
|
||||
|
||||
(defn- with-whiteboard-content
|
||||
[shape]
|
||||
{:block/content (or (:text shape) "")})
|
||||
|
||||
(defn with-whiteboard-block-props
|
||||
[shape]
|
||||
(merge {}
|
||||
(with-whiteboard-block-refs shape)
|
||||
(with-whiteboard-content shape)))
|
||||
|
||||
(defn extract-whiteboard-edn
|
||||
"Extracts whiteboard page from given edn file
|
||||
Whiteboard page edn is a subset of page schema
|
||||
|
@ -192,7 +211,9 @@
|
|||
page-block (merge page-block page-entity (when-not (:block/uuid page-block) {:block/uuid (d/squuid)}))
|
||||
blocks (->> blocks
|
||||
(map #(merge % {:block/level 1
|
||||
:block/uuid (or (:block/uuid %) (gp-block/get-custom-id-or-new-id (:block/properties %)))}))
|
||||
:block/uuid (or (:block/uuid %)
|
||||
(gp-block/get-custom-id-or-new-id (:block/properties %)))}
|
||||
(with-whiteboard-block-props (:block/properties %))))
|
||||
(gp-block/with-parent-and-left {:block/name page-name}))
|
||||
_ (when verbose (println "Parsing finished: " file))]
|
||||
{:pages [page-block]
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
[frontend.db.model :as model]
|
||||
[frontend.db.utils :as db-utils]
|
||||
[frontend.modules.outliner.file :as outliner-file]
|
||||
[frontend.state :as state]))
|
||||
[frontend.state :as state]
|
||||
[logseq.graph-parser.extract :refer [with-whiteboard-block-props]]))
|
||||
|
||||
;; (defn set-linked-page-or-block!
|
||||
;; [page-or-block-id]
|
||||
|
@ -38,24 +39,13 @@
|
|||
;; Use the block's id as the shape's id.
|
||||
{:id uuid})))
|
||||
|
||||
(defn- get-shape-refs [shape]
|
||||
(when (= "logseq-portal" (:type shape))
|
||||
[(select-keys (model/get-page (:pageId shape)) [:db/id])]))
|
||||
|
||||
(defn- get-shape-text [shape]
|
||||
(:text shape))
|
||||
|
||||
(defn- shape->block [shape page-name]
|
||||
(let [properties shape
|
||||
block {:block/uuid (uuid (:id properties))
|
||||
:block/page {:block/name page-name}
|
||||
:block/content "" ;; give it empty string since some block utility requires it
|
||||
:block/properties properties}
|
||||
refs (get-shape-refs shape)
|
||||
content (get-shape-text shape)]
|
||||
(merge block
|
||||
(when refs {:block/refs refs})
|
||||
(when content {:block/content content}))))
|
||||
additional-props (with-whiteboard-block-props shape)]
|
||||
(merge block additional-props)))
|
||||
|
||||
(defn- tldr-page->blocks-tx [page-name tldr-data]
|
||||
(let [page-block {:block/name page-name
|
||||
|
@ -89,7 +79,7 @@
|
|||
:name "page"
|
||||
:shapes shapes})]})))
|
||||
|
||||
(defn page-name->tldr
|
||||
(defn page-name->tldr
|
||||
([page-name]
|
||||
(page-name->tldr page-name nil))
|
||||
([page-name shape-id]
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
(empty? @write-chan-batch-buf))
|
||||
|
||||
(def blocks-pull-keys-with-persisted-ids
|
||||
'[*
|
||||
'[:block/properties
|
||||
{:block/page [:block/name :block/uuid]}
|
||||
{:block/left [:block/name :block/uuid]}
|
||||
{:block/parent [:block/name :block/uuid]}
|
||||
|
|
Loading…
Reference in New Issue