ソースを参照

enhance: save only namespaced pages to Library

Tienson Qin 9 ヶ月 前
コミット
5f547a4e17

+ 4 - 2
deps/db/src/logseq/db/frontend/malli_schema.cljs

@@ -3,9 +3,9 @@
   (:require [clojure.set :as set]
             [clojure.string :as string]
             [datascript.core :as d]
+            [logseq.db.common.entity-plus :as entity-plus]
             [logseq.db.common.order :as db-order]
             [logseq.db.frontend.class :as db-class]
-            [logseq.db.common.entity-plus :as entity-plus]
             [logseq.db.frontend.entity-util :as entity-util]
             [logseq.db.frontend.property :as db-property]
             [logseq.db.frontend.property.type :as db-property-type]
@@ -277,7 +277,9 @@
    (concat
     [:map
      ;; journal-day is only set for journal pages
-     [:block/journal-day {:optional true} :int]]
+     [:block/journal-day {:optional true} :int]
+     [:block/parent {:optional true} :int]
+     [:block/order {:optional true} block-order]]
     page-attrs
     page-or-block-attrs)))
 

+ 14 - 1
deps/graph-parser/src/logseq/graph_parser/block.cljs

@@ -364,6 +364,18 @@
   [s]
   (string/replace s "#" "HashTag-"))
 
+(defn page-with-parent-and-order
+  "Apply to namespace pages"
+  [db page & {:keys [parent]}]
+  ;; FIXME: using db/ident instead of page title because users can create pages
+  ;; with the same name
+  (let [library (ldb/get-page db "Library")]
+    (when (nil? library)
+      (throw (ex-info "Library page doesn't exist" {})))
+    (assoc page
+           :block/parent (or parent (:db/id library))
+           :block/order (db-order/gen-key))))
+
 ;; TODO: refactor
 (defn page-name->map
   "Create a page's map structure given a original page name (string).
@@ -411,7 +423,8 @@
 
 (defn- ref->map
   [db *col {:keys [date-formatter db-based? *name->id tag?]}]
-  (let [col (remove string/blank? @*col)
+  (let [db-based? (or (and db (ldb/db-based-graph? db)) db-based?)
+        col (remove string/blank? @*col)
         children-pages (when-not db-based?
                          (->> (mapcat (fn [p]
                                         (let [p (if (map? p)

+ 1 - 1
deps/outliner/src/logseq/outliner/core.cljs

@@ -839,7 +839,7 @@
                                    (:db/id (:block/parent target-block))
                                    (:db/id target-block))
                    :block/order block-order}
-                   not-same-page?
+                   (and not-same-page? (not (or (ldb/page? block) (ldb/page? target-block))))
                    (assoc :block/page target-page))]
         children-page-tx (when not-same-page?
                            (let [children-ids (ldb/get-block-children-ids db (:block/uuid block))]

+ 1 - 2
deps/shui/src/logseq/shui/base/core.cljs

@@ -51,8 +51,7 @@
           {:variant variant
            :data-button :icon
            :style (when size {:width size :height size})})
-   (tabler-icon/root (name icon-name) (merge {:size 20
-                                              :key "icon"} icon-props))
+   (tabler-icon/root (name icon-name) (merge {:size 20} icon-props))
    child))
 
 (def button-ghost-icon (partial button-icon :ghost))

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

@@ -62,7 +62,6 @@
             [frontend.mobile.util :as mobile-util]
             [frontend.modules.outliner.tree :as tree]
             [frontend.modules.shortcut.utils :as shortcut-utils]
-            [frontend.util.ref :as ref]
             [frontend.security :as security]
             [frontend.state :as state]
             [frontend.template :as template]
@@ -70,6 +69,7 @@
             [frontend.util :as util]
             [frontend.util.file-based.clock :as clock]
             [frontend.util.file-based.drawer :as drawer]
+            [frontend.util.ref :as ref]
             [frontend.util.text :as text-util]
             [goog.dom :as gdom]
             [goog.functions :refer [debounce]]
@@ -3230,7 +3230,7 @@
                                         (rum/with-key (breadcrumb-fragment config block label opts)
                                           (str (:block/uuid block))))
                                       [:span.opacity-70 {:key "dots"} "⋯"])))
-                             (interpose (rum/with-key (breadcrumb-separator) "icon")))]
+                             (interpose (breadcrumb-separator)))]
         (when (seq breadcrumbs)
           [:div.breadcrumb.block-parents
            {:class (when (seq breadcrumbs)

+ 1 - 1
src/main/frontend/components/cmdk/list_item.cljs

@@ -40,7 +40,7 @@
             highlighted-text (string/replace normal-text query-re "<:hlmarker>$1<:hlmarker>")
             segs (string/split highlighted-text #"<:hlmarker>")]
         (if (seq segs)
-          (into [:span {:data-testid text-string}]
+          (into [:span {"data-testid" text-string}]
                 (map-indexed (fn [i seg]
                                (if (even? i)
                                  [:span seg]

+ 8 - 8
src/main/frontend/components/page.cljs

@@ -192,13 +192,13 @@
 (rum/defcs page-blocks-cp < rum/reactive db-mixins/query
   {:will-mount (fn [state]
                  (when-not (config/db-based-graph?)
-                  (let [page-e (first (:rum/args state))
-                        page-name (:block/name page-e)]
-                    (when (and page-name
-                               (db/journal-page? page-name)
-                               (>= (date/journal-title->int page-name)
-                                   (date/journal-title->int (date/today))))
-                      (state/pub-event! [:journal/insert-template page-name]))))
+                   (let [page-e (first (:rum/args state))
+                         page-name (:block/name page-e)]
+                     (when (and page-name
+                                (db/journal-page? page-name)
+                                (>= (date/journal-title->int page-name)
+                                    (date/journal-title->int (date/today))))
+                       (state/pub-event! [:journal/insert-template page-name]))))
                  state)}
   [state block* {:keys [sidebar? whiteboard?] :as config}]
   (when-let [id (:db/id block*)]
@@ -447,7 +447,7 @@
   (let [with-actions? (not config/publishing?)]
     [:div.ls-page-title.flex.flex-1.w-full.content.items-start.title
      {:class (when-not whiteboard-page? "title")
-      :data-testid "page title"
+      "data-testid" "page title"
       :on-pointer-down (fn [e]
                          (when (util/right-click? e)
                            (state/set-state! :page-title/context {:page (:block/title page)

+ 1 - 1
src/main/frontend/components/repo.cljs

@@ -69,7 +69,7 @@
         :let [only-cloud? (and remote? (nil? root))
               db-based? (config/db-based-graph? url)]]
     [:div.flex.justify-between.mb-4.items-center.group {:key (or url GraphUUID)
-                                                        :data-testid url}
+                                                        "data-testid" url}
      [:div
       [:span.flex.items-center.gap-1
        (normalized-graph-label repo

+ 1 - 1
src/main/frontend/components/rtc/indicator.cljs

@@ -156,7 +156,7 @@
         unpushed-block-update-count (:pending-local-ops detail-info)
         {:keys [local-tx remote-tx]} detail-info]
     [:div.cp__rtc-sync
-     [:div.hidden {:data-testid "rtc-tx"} (pr-str {:local-tx local-tx :remote-tx remote-tx})]
+     [:div.hidden {"data-testid" "rtc-tx"} (pr-str {:local-tx local-tx :remote-tx remote-tx})]
      [:div.cp__rtc-sync-indicator.flex.flex-row.items-center.gap-1
       (when downloading?'
         (shui/button

+ 2 - 11
src/main/frontend/worker/handler/page/db_based/page.cljs

@@ -101,15 +101,6 @@
    first
    (d/entity db)))
 
-(defn- page-with-parent-and-order
-  [db page & {:keys [parent]}]
-  (let [library (ldb/get-page db "Library")]
-    (when (nil? library)
-      (throw (ex-info "Library page doesn't exist" {})))
-    (assoc page
-           :block/parent (or parent (:db/id library))
-           :block/order (db-order/gen-key))))
-
 (defn- split-namespace-pages
   [db page date-formatter]
   (let [{:block/keys [title] block-uuid :block/uuid} page]
@@ -168,7 +159,7 @@
                     (db-class/build-new-class db (assoc page :logseq.property.class/extends parent-eid)))
                   (if (de/entity? page)
                     page
-                    (page-with-parent-and-order db page {:parent parent-eid})))))
+                    (gp-block/page-with-parent-and-order db page {:parent parent-eid})))))
             pages)))
        [page])
      (remove nil?))))
@@ -216,7 +207,7 @@
             [page parents] (if (and (text/namespace-page? title) split-namespace?)
                              (let [pages (split-namespace-pages db page date-formatter)]
                                [(last pages) (butlast pages)])
-                             [(page-with-parent-and-order db page) nil])]
+                             [page nil])]
         (when (and page (or (nil? (:db/ident page))
                             ;; New page creation must not override built-in entities
                             (not (db-malli-schema/internal-ident? (:db/ident page)))))