mirror of https://github.com/logseq/logseq
Fix page block not saving invalid-properties
parent
340fb8cf9a
commit
b47826d69d
|
@ -42,12 +42,12 @@
|
||||||
(defn- build-page-entity
|
(defn- build-page-entity
|
||||||
[properties file page-name page ref-tags {:keys [date-formatter db]}]
|
[properties file page-name page ref-tags {:keys [date-formatter db]}]
|
||||||
(let [alias (:alias properties)
|
(let [alias (:alias properties)
|
||||||
alias (if (string? alias) [alias] alias)
|
alias' (if (string? alias) [alias] alias)
|
||||||
aliases (and alias
|
aliases (and alias'
|
||||||
(seq (remove #(or (= page-name (gp-util/page-name-sanity-lc %))
|
(seq (remove #(or (= page-name (gp-util/page-name-sanity-lc %))
|
||||||
(string/blank? %)) ;; disable blank alias
|
(string/blank? %)) ;; disable blank alias
|
||||||
alias)))
|
alias')))
|
||||||
aliases (->>
|
aliases' (->>
|
||||||
(map
|
(map
|
||||||
(fn [alias]
|
(fn [alias]
|
||||||
(let [page-name (gp-util/page-name-sanity-lc alias)
|
(let [page-name (gp-util/page-name-sanity-lc alias)
|
||||||
|
@ -65,17 +65,26 @@
|
||||||
:block/alias aliases}
|
:block/alias aliases}
|
||||||
{:block/name page-name})))
|
{:block/name page-name})))
|
||||||
aliases)
|
aliases)
|
||||||
(remove nil?))]
|
(remove nil?))
|
||||||
|
[*valid-properties *invalid-properties]
|
||||||
|
((juxt filter remove)
|
||||||
|
(fn [[k _v]] (gp-property/valid-property-name? (str k))) properties)
|
||||||
|
valid-properties (into {} *valid-properties)
|
||||||
|
invalid-properties (set (map (comp name first) *invalid-properties))]
|
||||||
(cond->
|
(cond->
|
||||||
(gp-util/remove-nils
|
(gp-util/remove-nils
|
||||||
(assoc
|
(assoc
|
||||||
(gp-block/page-name->map page false db true date-formatter)
|
(gp-block/page-name->map page false db true date-formatter)
|
||||||
:block/file {:file/path (gp-util/path-normalize file)}))
|
:block/file {:file/path (gp-util/path-normalize file)}))
|
||||||
(seq properties)
|
|
||||||
(assoc :block/properties properties)
|
|
||||||
|
|
||||||
(seq aliases)
|
(seq valid-properties)
|
||||||
(assoc :block/alias aliases)
|
(assoc :block/properties valid-properties)
|
||||||
|
|
||||||
|
(seq invalid-properties)
|
||||||
|
(assoc :block/invalid-properties invalid-properties)
|
||||||
|
|
||||||
|
(seq aliases')
|
||||||
|
(assoc :block/alias aliases')
|
||||||
|
|
||||||
(:tags properties)
|
(:tags properties)
|
||||||
(assoc :block/tags (let [tags (:tags properties)
|
(assoc :block/tags (let [tags (:tags properties)
|
||||||
|
|
|
@ -210,15 +210,30 @@
|
||||||
(let [conn (ldb/start-conn)
|
(let [conn (ldb/start-conn)
|
||||||
properties {"foo" "valid"
|
properties {"foo" "valid"
|
||||||
"[[foo]]" "invalid"
|
"[[foo]]" "invalid"
|
||||||
"some,prop" "invalid"}]
|
"some,prop" "invalid"}
|
||||||
(graph-parser/parse-file conn "foo.md" (gp-property/->block-content properties) {})
|
body (str (gp-property/->block-content properties)
|
||||||
|
"\n- " (gp-property/->block-content properties))]
|
||||||
|
(graph-parser/parse-file conn "foo.md" body {})
|
||||||
|
|
||||||
(is (= [{:block/properties {:foo "valid"}
|
(is (= [{:block/properties {:foo "valid"}
|
||||||
:block/invalid-properties #{"[[foo]]" "some,prop"}}]
|
:block/invalid-properties #{"[[foo]]" "some,prop"}}]
|
||||||
(->> (d/q '[:find (pull ?b [*])
|
(->> (d/q '[:find (pull ?b [*])
|
||||||
:in $
|
:in $
|
||||||
:where [?b :block/properties] [(missing? $ ?b :block/name)]]
|
:where
|
||||||
|
[?b :block/properties]
|
||||||
|
[(missing? $ ?b :block/pre-block?)]
|
||||||
|
[(missing? $ ?b :block/name)]]
|
||||||
@conn)
|
@conn)
|
||||||
(map first)
|
(map first)
|
||||||
(map #(select-keys % [:block/properties :block/invalid-properties]))))
|
(map #(select-keys % [:block/properties :block/invalid-properties]))))
|
||||||
"Has correct (in)valid block properties")))
|
"Has correct (in)valid block properties")
|
||||||
|
|
||||||
|
(is (= [{:block/properties {:foo "valid"}
|
||||||
|
:block/invalid-properties #{"[[foo]]" "some,prop"}}]
|
||||||
|
(->> (d/q '[:find (pull ?b [*])
|
||||||
|
:in $
|
||||||
|
:where [?b :block/properties] [?b :block/name]]
|
||||||
|
@conn)
|
||||||
|
(map first)
|
||||||
|
(map #(select-keys % [:block/properties :block/invalid-properties]))))
|
||||||
|
"Has correct (in)valid page properties")))
|
||||||
|
|
Loading…
Reference in New Issue