Browse Source

chore: rename property node/type to node/display-type

node can be a block or page and type is a general enough word that
it could refer to one of those. Use a more specific name so we
don't confuse ourselves or our users
Gabriel Horner 1 year ago
parent
commit
476e641c1a

+ 5 - 5
deps/db/src/logseq/db/frontend/property.cljs

@@ -38,11 +38,11 @@
                                    :cardinality :many
                                    :public? true
                                    :classes #{:logseq.class/Root}}}
-   :logseq.property.node/type {:title "Node type"
-                               :schema {:type :keyword
-                                        :public? false
-                                        :hide? true
-                                        :view-context :block}}
+   :logseq.property.node/display-type {:title "Node Display Type"
+                                       :schema {:type :keyword
+                                                :public? false
+                                                :hide? true
+                                                :view-context :block}}
    :logseq.property.code/mode {:title "Code mode"
                                :schema {:type :string
                                         :public? false

+ 1 - 1
deps/db/src/logseq/db/frontend/schema.cljs

@@ -2,7 +2,7 @@
   "Main datascript schemas for the Logseq app"
   (:require [clojure.set :as set]))
 
-(def version 27)
+(def version 28)
 ;; A page is a special block, a page can corresponds to multiple files with the same ":block/name".
 (def ^:large-vars/data-var schema
   {:db/ident        {:db/unique :db.unique/identity}

+ 4 - 4
src/main/frontend/commands.cljs

@@ -187,14 +187,14 @@
     [[:editor/input "" {:last-pattern command-trigger}]
      [:editor/set-property :block/tags :logseq.class/Query]
      [:editor/set-property :logseq.property/query ""]
-     [:editor/set-property-on-block-property :logseq.property/query :logseq.property.node/type :code]
+     [:editor/set-property-on-block-property :logseq.property/query :logseq.property.node/display-type :code]
      [:editor/set-property-on-block-property :logseq.property/query :logseq.property.code/mode "clojure"]]
     (->block "query")))
 
 (defn db-based-code-block
   []
   [[:editor/input "" {:last-pattern command-trigger}]
-   [:editor/set-property :logseq.property.node/type :code]
+   [:editor/set-property :logseq.property.node/display-type :code]
    [:codemirror/focus]])
 
 (defn file-based-code-block
@@ -214,14 +214,14 @@
   []
   (if (config/db-based-graph? (state/get-current-repo))
     [[:editor/input "" {:last-pattern command-trigger}]
-     [:editor/set-property :logseq.property.node/type :quote]]
+     [:editor/set-property :logseq.property.node/display-type :quote]]
     (->block "quote")))
 
 (defn math-block-steps
   []
   (if (config/db-based-graph? (state/get-current-repo))
     [[:editor/input "" {:last-pattern command-trigger}]
-     [:editor/set-property :logseq.property.node/type :math]]
+     [:editor/set-property :logseq.property.node/display-type :math]]
     (->block "export" "latex")))
 
 (defn get-statuses

+ 3 - 3
src/main/frontend/components/block.cljs

@@ -2138,7 +2138,7 @@
 
 (defn build-block-title
   [config block]
-  (let [node-type (:logseq.property.node/type block)]
+  (let [node-type (:logseq.property.node/display-type block)]
     (case node-type
       :code
       [:div.flex.flex-1.w-full
@@ -2411,7 +2411,7 @@
       :block-content-slotted
       (-> block (dissoc :block/children :block/page)))]
 
-    (when-not (contains? #{:code :math} (:logseq.property.node/type block))
+    (when-not (contains? #{:code :math} (:logseq.property.node/display-type block))
       (let [title-collapse-enabled? (:outliner/block-title-collapse-enabled? (state/get-config))]
         (when (and (not block-ref-with-title?)
                    (seq body)
@@ -2725,7 +2725,7 @@
         table? (:table? config)]
     [:div.block-content-or-editor-wrap
      {:class (when (:page-title? config) "ls-page-title-container")
-      :data-node-type (some-> (:logseq.property.node/type block) name)}
+      :data-node-type (some-> (:logseq.property.node/display-type block) name)}
      (when (and db-based? (not table?)) (block-positioned-properties config block :block-left))
      [:div.block-content-or-editor-inner
       [:div.flex.flex-1.flex-row.gap-1.items-center

+ 1 - 1
src/main/frontend/components/property/value.cljs

@@ -750,7 +750,7 @@
                                            (ui-outliner-tx/transact!
                                             {:outliner-op :save-block}
                                             (db-property-handler/set-block-properties! (:db/id block)
-                                                                                       {:logseq.property.node/type :code
+                                                                                       {:logseq.property.node/display-type :code
                                                                                         :logseq.property.code/mode "clojure"})
                                             (outliner-op/save-block! {:db/id (:db/id block) :block/title ""}))
 

+ 1 - 1
src/main/frontend/handler/code.cljs

@@ -27,7 +27,7 @@
           ;; update default value for the editor initial state
           (set! ds -v value)
           (cond
-            (= :code (:logseq.property.node/type block))
+            (= :code (:logseq.property.node/display-type block))
             (editor-handler/save-block-if-changed! block value)
 
             ;; save block content

+ 1 - 2
src/main/frontend/handler/editor.cljs

@@ -845,7 +845,7 @@
                           db-based? (config/db-based-graph? repo)
                           delete-prev-block? (and db-based?
                                                   (empty? (:block/tags block))
-                                                  (not (:logseq.property.node/type block))
+                                                  (not (:logseq.property.node/display-type block))
                                                   (seq (:block/properties block))
                                                   (empty? (:block/properties prev-block))
                                                   (not (:logseq.property/created-from-property block)))]
@@ -3360,7 +3360,6 @@
         (and (seq (:block/tags block))
              (some (fn [t]
                      (let [properties (map :db/ident (:logseq.property.class/properties t))]
-                       (prn :tags (:block/title t) properties)
                        (and (seq properties)
                             (not (db-pu/all-hidden-properties? properties))))) (:block/tags block))))))
 

+ 26 - 2
src/main/frontend/worker/db/migrate.cljs

@@ -9,7 +9,8 @@
             [frontend.worker.search :as search]
             [cljs-bean.core :as bean]
             [logseq.db.sqlite.util :as sqlite-util]
-            [logseq.common.config :as common-config]))
+            [logseq.common.config :as common-config]
+            [logseq.common.util :as common-util]))
 
 ;; TODO: fixes/rollback
 
@@ -96,6 +97,28 @@
                               [:db/add id new prop-value]]))))
             old-new-props)))
 
+(defn- rename-properties
+  [props-to-rename]
+  (fn [conn _search-db]
+    (when (ldb/db-based-graph? @conn)
+     (let [props-tx (mapv (fn [[old new]]
+                            (merge {:db/id (:db/id (d/entity @conn old))
+                                    :db/ident new}
+                                   (when-let [new-title (get-in db-property/built-in-properties [new :title])]
+                                     {:block/title new-title
+                                      :block/name (common-util/page-name-sanity-lc new-title)})))
+                          props-to-rename)]
+       ;; Property changes need to be in their own tx for subsequent uses of properties to take effect
+       (ldb/transact! conn props-tx {:db-migrate? true})
+
+       (mapcat (fn [[old new]]
+                 ;; can't use datoms b/c user properties aren't indexed
+                 (->> (d/q '[:find ?b ?prop-v :in $ ?prop :where [?b ?prop ?prop-v]] @conn old)
+                      (mapcat (fn [[id prop-value]]
+                                [[:db/retract id old]
+                                 [:db/add id new prop-value]]))))
+               props-to-rename)))))
+
 (defn- update-block-type-many->one
   [conn _search-db]
   (let [db @conn
@@ -276,7 +299,8 @@
    [25 {:properties [:logseq.property/query]
         :fix add-query-property-to-query-tag}]
    [26 {:properties [:logseq.property.node/type]}]
-   [27 {:properties [:logseq.property.code/mode]}]])
+   [27 {:properties [:logseq.property.code/mode]}]
+   [28 {:fix (rename-properties {:logseq.property.node/type :logseq.property.node/display-type})}]])
 
 (let [max-schema-version (apply max (map first schema-version->updates))]
   (assert (<= db-schema/version max-schema-version))