瀏覽代碼

Handle more block/name lookup refs

Tienson Qin 1 年之前
父節點
當前提交
50e3ef5157

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

@@ -228,7 +228,7 @@
     (let [page (:page default-home)
           page (when (and (string? page)
                           (not (string/blank? page)))
-                 (db/entity [:block/name (util/safe-page-name-sanity-lc page)]))]
+                 (db/entity (ldb/get-first-page-by-name (db/get-db) page)))]
       (if page
         default-home
         (dissoc default-home :page)))))
@@ -655,7 +655,7 @@
                    (let [page (util/safe-page-name-sanity-lc page)
                          [db-id block-type] (if (= page "contents")
                                               ["contents" :contents]
-                                              [(:db/id (db/pull [:block/name page])) :page])]
+                                              [(ldb/get-first-page-by-name (db/get-db) page) :page])]
                      (state/sidebar-add-block! current-repo db-id block-type)))
                  (reset! sidebar-inited? true))))
            (when (state/mobile?)

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

@@ -146,7 +146,7 @@
                                       matched-pages)
                               (cons q matched-pages)))
 
-                                ;; reorder, shortest and starts-with first.
+                          ;; reorder, shortest and starts-with first.
                           :else
                           (let [matched-pages (remove nil? matched-pages)
                                 matched-pages (sort-by

+ 25 - 29
src/main/frontend/components/page.cljs

@@ -255,7 +255,7 @@
                     (do (when-not untitled? (notification/show! (t :page/illegal-page-name) :warning))
                         (rollback-fn))
 
-                    (and (collide?) (or whiteboard-page? (model/whiteboard-page? @*title-value)))
+                    (collide?)
                     (do (notification/show! (t :page/page-already-exists @*title-value) :error)
                         (rollback-fn))
 
@@ -298,14 +298,13 @@
   (rum/local false ::edit?)
   (rum/local "" ::input-value)
   {:init (fn [state]
-           (let [page-name (first (:rum/args state))
-                 original-name (:block/original-name (db/entity [:block/name (util/page-name-sanity-lc page-name)]))
+           (let [page (first (:rum/args state))
+                 original-name (:block/original-name page)
                  *title-value (atom original-name)]
              (assoc state ::title-value *title-value)))}
-  [state page-name {:keys [fmt-journal? preview? *hover?]}]
-  (when page-name
-    (let [page (when page-name (db/entity [:block/name page-name]))
-          page (db/sub-block (:db/id page))
+  [state page {:keys [fmt-journal? preview? *hover?]}]
+  (when page
+    (let [page (db/sub-block (:db/id page))
           title (:block/original-name page)]
       (when title
         (let [icon (:logseq.property/icon page)
@@ -314,14 +313,14 @@
               *input-value (get state ::input-value)
               repo (state/get-current-repo)
               hls-page? (pdf-utils/hls-file? title)
-              whiteboard-page? (model/whiteboard-page? page-name)
-              untitled? (and whiteboard-page? (parse-uuid page-name)) ;; normal page cannot be untitled right?
+              whiteboard-page? (model/whiteboard-page? page)
+              untitled? (and whiteboard-page? (parse-uuid title)) ;; normal page cannot be untitled right?
               title (if hls-page?
                       [:a.asset-ref (pdf-utils/fix-local-asset-pagename title)]
                       (if fmt-journal?
                         (date/journal-title->custom-format title)
                         title))
-              old-name (or title page-name)
+              old-name title
               db-based? (config/db-based-graph? repo)]
           [:div.ls-page-title.flex.flex-1.flex-row.flex-wrap.w-full.relative.items-center.gap-2
            {:on-mouse-over #(reset! *hover? true)
@@ -344,17 +343,16 @@
             {:class (when-not whiteboard-page? "title")
              :on-pointer-down (fn [e]
                                 (when (util/right-click? e)
-                                  (state/set-state! :page-title/context {:page page-name
+                                  (state/set-state! :page-title/context {:page (:block/original-name page)
                                                                          :page-entity page})))
              :on-click (fn [e]
                          (when-not (= (.-nodeName (.-target e)) "INPUT")
                            (.preventDefault e)
                            (if (gobj/get e "shiftKey")
-                             (when-let [page (db/pull repo '[*] [:block/name page-name])]
-                               (state/sidebar-add-block!
-                                repo
-                                (:db/id page)
-                                :page))
+                             (state/sidebar-add-block!
+                              repo
+                              (:db/id page)
+                              :page)
                              (do
                                (when (and (not hls-page?)
                                           (not fmt-journal?)
@@ -367,7 +365,7 @@
               (page-title-editor page {:*title-value *title-value
                                        :*edit? *edit?
                                        :*input-value *input-value
-                                       :page-name page-name
+                                       :page-name (:block/original-name page)
                                        :old-name old-name
                                        :untitled? untitled?
                                        :whiteboard-page? whiteboard-page?
@@ -375,9 +373,9 @@
               [:span.title.block
                {:on-click (fn []
                             (when (and (state/home?) (not preview?))
-                              (route-handler/redirect-to-page! page-name)))
+                              (route-handler/redirect-to-page! (:block/uuid page))))
                 :data-value @*input-value
-                :data-ref   page-name
+                :data-ref   (:block/original-name page)
                 :style      {:opacity (when @*edit? 0)}}
                (let [nested? (and (string/includes? title page-ref/left-brackets)
                                   (string/includes? title page-ref/right-brackets))]
@@ -426,9 +424,8 @@
 (defn get-page-entity
   [page-name]
   (if-let [block-id (parse-uuid page-name)]
-    (let [entity (db/entity [:block/uuid block-id])]
-      entity)
-    (db/entity [:block/name page-name])))
+    (db/entity [:block/uuid block-id])
+    (db/entity (ldb/get-first-page-by-name (db/get-db) page-name))))
 
 (defn- get-sanity-page-name
   [state page-name]
@@ -460,7 +457,7 @@
                 db-based? (config/db-based-graph? repo)
                 fmt-journal? (boolean (date/journal-title->int page-name))
                 whiteboard? (:whiteboard? option) ;; in a whiteboard portal shape?
-                whiteboard-page? (model/whiteboard-page? page-name) ;; is this page a whiteboard?
+                whiteboard-page? (model/whiteboard-page? page) ;; is this page a whiteboard?
                 route-page-name path-page-name
                 page-name (:block/name page)
                 page-original-name (:block/original-name page)
@@ -496,12 +493,11 @@
                          :on-mouse-leave (fn [e]
                                            (page-mouse-leave e *control-show?))}
                         (page-blocks-collapse-control title *control-show? *all-collapsed?)])
-                     (let [original-name (:block/original-name (db/entity [:block/name (util/page-name-sanity-lc page-name)]))]
-                       (when (and (not whiteboard?) original-name)
-                         (page-title page-name {:journal? journal?
-                                                :fmt-journal? fmt-journal?
-                                                :preview? preview?
-                                                :*hover? (::hover-title? state)})))
+                     (when (and (not whiteboard?) (ldb/page? page))
+                       (page-title page {:journal? journal?
+                                         :fmt-journal? fmt-journal?
+                                         :preview? preview?
+                                         :*hover? (::hover-title? state)}))
                      (when (not config/publishing?)
                        (when config/lsp-enabled?
                          [:div.flex.flex-row

+ 24 - 22
src/main/frontend/components/right_sidebar.cljs

@@ -23,7 +23,8 @@
             [medley.core :as medley]
             [reitit.frontend.easy :as rfe]
             [rum.core :as rum]
-            [frontend.db.rtc.debug-ui :as rtc-debug-ui]))
+            [frontend.db.rtc.debug-ui :as rtc-debug-ui]
+            [logseq.db :as ldb]))
 
 (rum/defc toggle
   []
@@ -51,7 +52,7 @@
 (rum/defc contents < rum/reactive db-mixins/query
   []
   [:div.contents.flex-col.flex.ml-3
-   (when-let [contents (db/entity [:block/name "contents"])]
+   (when-let [contents (db/entity (ldb/get-first-page-by-name (db/get-db) "contents"))]
      (page/contents-page contents))])
 
 (rum/defc shortcut-settings
@@ -200,26 +201,27 @@
         multi-items? (> block-count 1)]
 
     (menu-content
-      {:on-click toggle-fn :class "w-48" :align "end"}
-
-      (menu-item {:on-click #(state/sidebar-remove-block! idx)} (t :right-side-bar/pane-close))
-      (when multi-items? (menu-item {:on-click #(state/sidebar-remove-rest! db-id)} (t :right-side-bar/pane-close-others)))
-      (when multi-items? (menu-item {:on-click (fn []
-                                                 (state/clear-sidebar-blocks!)
-                                                 (state/hide-right-sidebar!))} (t :right-side-bar/pane-close-all)))
-      (when (and (not collapsed?) multi-items?) [:hr.menu-separator])
-      (when-not collapsed? (menu-item {:on-click #(state/sidebar-block-toggle-collapse! db-id)} (t :right-side-bar/pane-collapse)))
-      (when multi-items? (menu-item {:on-click #(state/sidebar-block-collapse-rest! db-id)} (t :right-side-bar/pane-collapse-others)))
-      (when multi-items? (menu-item {:on-click #(state/sidebar-block-set-collapsed-all! true)} (t :right-side-bar/pane-collapse-all)))
-      (when (and collapsed? multi-items?) [:hr.menu-separator])
-      (when collapsed? (menu-item {:on-click #(state/sidebar-block-toggle-collapse! db-id)} (t :right-side-bar/pane-expand)))
-      (when multi-items? (menu-item {:on-click #(state/sidebar-block-set-collapsed-all! false)} (t :right-side-bar/pane-expand-all)))
-      (when (= type :page) [:hr.menu-separator])
-      (when (= type :page)
-        (let [name (:block/name (db/entity db-id))]
-          (menu-item {:href (if (db-model/whiteboard-page? name)
-                              (rfe/href :whiteboard {:name name})
-                              (rfe/href :page {:name name}))} (t :right-side-bar/pane-open-as-page)))))))
+     {:on-click toggle-fn :class "w-48" :align "end"}
+
+     (menu-item {:on-click #(state/sidebar-remove-block! idx)} (t :right-side-bar/pane-close))
+     (when multi-items? (menu-item {:on-click #(state/sidebar-remove-rest! db-id)} (t :right-side-bar/pane-close-others)))
+     (when multi-items? (menu-item {:on-click (fn []
+                                                (state/clear-sidebar-blocks!)
+                                                (state/hide-right-sidebar!))} (t :right-side-bar/pane-close-all)))
+     (when (and (not collapsed?) multi-items?) [:hr.menu-separator])
+     (when-not collapsed? (menu-item {:on-click #(state/sidebar-block-toggle-collapse! db-id)} (t :right-side-bar/pane-collapse)))
+     (when multi-items? (menu-item {:on-click #(state/sidebar-block-collapse-rest! db-id)} (t :right-side-bar/pane-collapse-others)))
+     (when multi-items? (menu-item {:on-click #(state/sidebar-block-set-collapsed-all! true)} (t :right-side-bar/pane-collapse-all)))
+     (when (and collapsed? multi-items?) [:hr.menu-separator])
+     (when collapsed? (menu-item {:on-click #(state/sidebar-block-toggle-collapse! db-id)} (t :right-side-bar/pane-expand)))
+     (when multi-items? (menu-item {:on-click #(state/sidebar-block-set-collapsed-all! false)} (t :right-side-bar/pane-expand-all)))
+     (when (= type :page) [:hr.menu-separator])
+     (when (= type :page)
+       (let [page  (db/entity db-id)
+             name (:block/name page)]
+         (menu-item {:href (if (db-model/whiteboard-page? page)
+                             (rfe/href :whiteboard {:name name})
+                             (rfe/href :page {:name name}))} (t :right-side-bar/pane-open-as-page)))))))
 
 (rum/defc drop-indicator
   [idx drag-to]

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

@@ -274,7 +274,7 @@
                             e
                             (content/page-title-custom-context-menu-content page))
                            (state/set-state! :page-title/context nil))}
-       (page/page-title (:block/original-name page) {:*hover? (atom false)})]
+       (page/page-title page {:*hover? (atom false)})]
 
       [:div.whiteboard-page-refs
        (references-count (:block/original-name page)

+ 5 - 2
src/main/frontend/db/model.cljs

@@ -813,9 +813,12 @@ independent of format as format specific heading characters are stripped"
       ffirst))
 
 (defn whiteboard-page?
-  "Given a page name or a page object, check if it is a whiteboard page"
+  "Given a page entity, page object or page name, check if it is a whiteboard page"
   [page]
-  (ldb/whiteboard-page? page))
+  (let [page (if (string? page)
+               (db-utils/entity (ldb/get-first-page-by-name (conn/get-db) page))
+               page)]
+    (ldb/whiteboard-page? page)))
 
 (defn get-orphaned-pages
   [opts]

+ 5 - 2
src/main/frontend/extensions/tldraw.cljs

@@ -26,7 +26,8 @@
             [frontend.components.whiteboard :as whiteboard]
             [cljs-bean.core :as bean]
             [frontend.db.async :as db-async]
-            [logseq.common.util :as common-util]))
+            [logseq.common.util :as common-util]
+            [logseq.db :as ldb]))
 
 (def tldraw (r/adapt-class (gobj/get TldrawLogseq "App")))
 
@@ -118,7 +119,9 @@
    :exportToImage (fn [page-uuid-str options]
                     (assert (common-util/uuid-string? page-uuid-str))
                     (state/set-modal! #(export/export-blocks (uuid page-uuid-str) (merge (js->clj options :keywordize-keys true) {:whiteboard? true}))))
-   :isWhiteboardPage model/whiteboard-page?
+   :isWhiteboardPage (fn [page-name]
+                       (when-let [entity (ldb/get-first-page-by-name (db/get-db) page-name)]
+                         (model/whiteboard-page? entity)))
    :isMobile util/mobile?
    :saveAsset save-asset-handler
    :makeAssetUrl assets-handler/make-asset-url