Quellcode durchsuchen

more places to use db eid instead of page name

Tienson Qin vor 1 Jahr
Ursprung
Commit
1b32378884

+ 4 - 12
deps/db/src/logseq/db.cljs

@@ -392,19 +392,11 @@
 
 (defn get-alias-source-page
   "return the source page (page-name) of an alias"
-  [db alias]
-  (let [alias (common-util/page-name-sanity-lc alias)
-        pages (d/q '[:find [(pull ?p [*]) ...]
-                     :in $ ?alias
-                     :where
-                     [?a :block/name ?alias]
-                     [?p :block/alias ?a]]
-                   db
-                   alias)]
-    ;; may be a case that a user added same alias into multiple pages.
+  [db alias-id]
+  (when alias-id
+      ;; may be a case that a user added same alias into multiple pages.
       ;; only return the first result for idiot-proof
-    (when (seq pages)
-      (first pages))))
+    (first (:block/_alias (d/entity db alias-id)))))
 
 (defn get-page-alias
   [db page-id]

+ 9 - 19
src/main/frontend/components/block.cljs

@@ -87,7 +87,8 @@
             [shadow.loader :as loader]
             [logseq.common.path :as path]
             [electron.ipc :as ipc]
-            [frontend.db.async :as db-async]))
+            [frontend.db.async :as db-async]
+            [datascript.impl.entity :as de]))
 
 ;; local state
 (defonce *dragging?
@@ -509,18 +510,10 @@
 (declare page-reference)
 
 (defn open-page-ref
-  [e config page-name page-name-in-block contents-page? whiteboard-page?]
+  [page-entity e page-name page-name-in-block contents-page?]
   (util/stop e)
   (when (not (util/right-click? e))
-    (p/let [redirect-page-name (model/get-redirect-page-name page-name (:block/alias? config))
-            redirect-page-name (if (or (= (util/page-name-sanity-lc (str (:id config)))
-                                          (util/page-name-sanity-lc redirect-page-name))
-                                       (= (some-> (state/get-current-page) util/page-name-sanity-lc)
-                                          (some-> redirect-page-name util/page-name-sanity-lc)))
-                                 page-name
-                                 redirect-page-name)
-            page (when redirect-page-name
-                   (db-async/<pull (state/get-current-repo) [:block/name (util/page-name-sanity-lc redirect-page-name)]))]
+    (let [page (or (first (:block/_alias page-entity)) page-entity)]
       (cond
         (gobj/get e "shiftKey")
         (when page
@@ -534,14 +527,11 @@
          page-name
          (whiteboard-handler/closest-shape (.-target e)))
 
-        whiteboard-page?
-        (route-handler/redirect-to-page! page-name)
-
         (nil? page)
         (state/pub-event! [:page/create page-name-in-block])
 
         :else
-        (route-handler/redirect-to-page! redirect-page-name))))
+        (route-handler/redirect-to-page! (:block/uuid page)))))
   (when (and contents-page?
              (util/mobile?)
              (state/get-left-sidebar-open?))
@@ -586,10 +576,10 @@
                            (reset! *mouse-down? true))))
       :on-pointer-up (fn [e]
                      (when @*mouse-down?
-                       (open-page-ref e config page-name page-name-in-block contents-page? whiteboard-page?)
+                       (open-page-ref page-entity e page-name page-name-in-block contents-page?)
                        (reset! *mouse-down? false)))
       :on-key-up (fn [e] (when (and e (= (.-key e) "Enter"))
-                           (open-page-ref e config page-name page-name-in-block contents-page? whiteboard-page?)))}
+                           (open-page-ref page-entity e page-name page-name-in-block contents-page?)))}
      (when-not hide-icon?
        (when-let [icon (:logseq.property/icon page-entity)]
          [:span.mr-1.inline-flex.items-center (icon/icon icon)]))
@@ -611,7 +601,7 @@
           (->elem :span (map-inline config label))
 
           :else
-          (let [original-name (util/get-page-original-name page-entity)
+          (let [original-name (:block/original-name page-entity)
                 s (cond untitled?
                         (t :untitled)
 
@@ -711,7 +701,7 @@
   (when-let [page-name-in-block (:block/name page)]
     (let [page-name-in-block (common-util/remove-boundary-slashes page-name-in-block)
           page-name (util/page-name-sanity-lc page-name-in-block)
-          page-entity (db/get-page page-name)
+          page-entity (if (de/entity? page) page (db/get-page page-name))
           whiteboard-page? (model/whiteboard-page? page-name)
           inner (page-inner config
                             page-name-in-block

+ 3 - 5
src/main/frontend/components/cmdk.cljs

@@ -218,7 +218,7 @@
                         (fn [page]
                           (let [entity (db/get-page page)
                                 whiteboard? (= (:block/type entity) "whiteboard")
-                                source-page (model/get-alias-source-page repo page)]
+                                source-page (model/get-alias-source-page repo (:db/id entity))]
                             (hash-map :icon (if whiteboard? "whiteboard" "page")
                                       :icon-theme :gray
                                       :text page
@@ -385,8 +385,7 @@
 
 (defmethod handle-action :open-page [_ state _event]
   (when-let [page-name (get-highlighted-page-name state)]
-    (let [redirect-page-name (model/get-redirect-page-name page-name)
-          page (db/get-page redirect-page-name)]
+    (let [page (db/get-page page-name)]
       (route-handler/redirect-to-page! (:block/uuid page)))
     (state/close-modal!)))
 
@@ -409,8 +408,7 @@
 
 (defmethod handle-action :open-page-right [_ state _event]
   (when-let [page-name (get-highlighted-page-name state)]
-    (let [redirect-page-name (model/get-redirect-page-name page-name)
-          page (db/get-page redirect-page-name)]
+    (let [page (db/get-page page-name)]
       (when page
         (editor-handler/open-block-in-sidebar! (:block/uuid page))))
     (state/close-modal!)))

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

@@ -75,12 +75,13 @@
 
 (rum/defc page-name
   [page icon recent?]
-  (let [original-name (:block/original-name page)
+  (let [repo (state/get-current-repo)
+        page (or (db/get-alias-source-page repo (:db/id page)) page)
+        original-name (:block/original-name page)
         whiteboard-page? (db-model/whiteboard-page? page)
         untitled? (db-model/untitled-page? original-name)
         name (:block/name page)
         file-rpath (when (util/electron?) (page-util/get-page-file-rpath name))
-        source-page (db-model/get-alias-source-page (state/get-current-repo) name)
         ctx-icon #(shui/tabler-icon %1 {:class "scale-90 pr-1 opacity-80"})
         open-in-sidebar #(state/sidebar-add-block!
                           (state/get-current-repo)

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

@@ -1025,7 +1025,7 @@
        (for [[n {:block/keys [name created-at updated-at backlinks] :as page}] (medley/indexed pages)]
          [:tr {:key name}
           [:td.n.w-12 [:span.opacity-70 (str (inc n) ".")]]
-          [:td.name [:a {:href     (rfe/href :page {:name (str (:block/uuid page))})}
+          [:td.name [:a {:href     (rfe/href :page {:name (:block/uuid page)})}
                      (component-block/page-cp {} page)]]
           [:td.backlinks [:span (or backlinks "0")]]
           (when-not orphaned-pages? [:td.created-at [:span (if created-at (date/int->local-time-2 created-at) "Unknown")]])
@@ -1325,7 +1325,7 @@
                                                repo
                                                (:db/id page)
                                                :page))))
-                              :href     (rfe/href :page {:name (str (:block/uuid page))})}
+                              :href     (rfe/href :page {:name (:block/uuid page)})}
                           (component-block/page-cp {} page)]]
 
                (when-not mobile?

+ 9 - 10
src/main/frontend/db/model.cljs

@@ -97,10 +97,10 @@
              distinct)))
 
 (defn get-alias-source-page
-  "return the source page (page-name) of an alias"
-  [repo alias]
+  "return the source page of an alias"
+  [repo alias-id]
   (when-let [db (conn/get-db repo)]
-    (ldb/get-alias-source-page db alias)))
+    (ldb/get-alias-source-page db alias-id)))
 
 (defn get-files-blocks
   [repo-url paths]
@@ -533,7 +533,6 @@ independent of format as format specific heading characters are stripped"
   (when page-name-or-uuid
     (ldb/get-page (conn/get-db) page-name-or-uuid)))
 
-;; FIXME: should pass page's db id
 (defn get-redirect-page-name
   "Given any readable page-name, return the exact page-name in db. If page
    doesn't exists yet, will return the passed `page-name`. Accepts both
@@ -542,11 +541,10 @@ independent of format as format specific heading characters are stripped"
   ([page-name] (get-redirect-page-name page-name false))
   ([page-name alias?]
    (when page-name
-     (let [page-name' (util/page-name-sanity-lc page-name)
-           page-entity (ldb/get-page (conn/get-db) page-name)]
+     (let [page-entity (ldb/get-page (conn/get-db) page-name)]
        (cond
          alias?
-         page-name'
+         (or (:block/name page-entity) page-name)
 
          (nil? page-entity)
          (if-let [journal-name (date/journal-title->custom-format page-name)]
@@ -554,9 +552,10 @@ independent of format as format specific heading characters are stripped"
            page-name)
 
          :else
-         (let [source-page (get-alias-source-page (state/get-current-repo) page-name')]
-           (or (when source-page (:block/name source-page))
-               page-name')))))))
+         (let [source-page (get-alias-source-page (state/get-current-repo) (:db/id page-entity))]
+           (or (:block/name source-page)
+               (:block/name page-entity)
+               page-name)))))))
 
 (defn get-page-original-name
   [page-name]

+ 2 - 2
src/main/frontend/extensions/graph.cljs

@@ -42,9 +42,9 @@
       (highlight-neighbours! graph node (set @*focus-nodes) dark?)
       (highlight-edges! graph node dark?))
     (when-not drag?
-      (let [page-name (model/get-redirect-page-name node)]
+      (do
         (.unhoverNode ^js graph node)
-        (route-handler/redirect-to-page! page-name)))))
+        (route-handler/redirect-to-page! node)))))
 
 (rum/defcs graph-2d <
   (rum/local nil :ref)

+ 4 - 4
src/main/frontend/extensions/tldraw.cljs

@@ -27,16 +27,16 @@
             [frontend.components.whiteboard :as whiteboard]
             [cljs-bean.core :as bean]
             [frontend.db.async :as db-async]
-            [logseq.common.util :as common-util]
-            [logseq.db :as ldb]))
+            [logseq.common.util :as common-util]))
 
 (def tldraw (r/adapt-class (gobj/get TldrawLogseq "App")))
 
 (def generate-preview (gobj/get TldrawLogseq "generateJSXFromModel"))
 
+;; FIXME: use page uuid instead or creating a ref
 (rum/defc page-cp
   [props]
-  (page/page {:page-name (model/get-redirect-page-name (gobj/get props "pageName")) :whiteboard? true}))
+  (page/page {:page-name (gobj/get props "pageName") :whiteboard? true}))
 
 (rum/defc block-cp
   [props]
@@ -152,7 +152,7 @@
                                  page' (or new-page page)]
                            (route-handler/redirect-to-page! (if whiteboard?
                                                               (:block/uuid page')
-                                                              (model/get-redirect-page-name (:block/name page')))
+                                                              (model/get-redirect-page-name (:block/uuid page')))
                                                             (when (and block-id (not= block-id (:block/uuid page')))
                                                               {:block-id block-id}))))))})
 

+ 25 - 21
src/main/frontend/handler/route.cljs

@@ -74,31 +74,35 @@
   ([page-name]
    (redirect-to-page! page-name {}))
   ([page-name {:keys [anchor push click-from-recent? block-id new-whiteboard?]
-               :or {click-from-recent? false}}]
+               :or {click-from-recent? false}
+               :as opts}]
    (when (or (uuid? page-name)
              (and (string? page-name) (not (string/blank? page-name))))
      (let [page (db/get-page page-name)
            whiteboard? (db/whiteboard-page? page)]
-       ;; Always skip onboarding when loading an existing whiteboard
-       (when-not new-whiteboard? (state/set-onboarding-whiteboard! true))
-       (when-let [db-id (:db/id page)]
-         (recent-handler/add-page-to-recent! db-id click-from-recent?))
-       (if (and whiteboard?  (= (str page-name) (state/get-current-page)) block-id)
-         (state/focus-whiteboard-shape block-id)
-         (let [m (cond->
-                  (default-page-route (str page-name))
-
-                   block-id
-                   (assoc :query-params (if whiteboard?
-                                          {:block-id block-id}
-                                          {:anchor (str "ls-block-" block-id)}))
-
-                   anchor
-                   (assoc :query-params {:anchor anchor})
-
-                   (boolean? push)
-                   (assoc :push push))]
-           (redirect! m)))))))
+       (if-let [source (db/get-alias-source-page (state/get-current-repo) (:db/id page))]
+         (redirect-to-page! (:block/uuid source) opts)
+         (do
+           ;; Always skip onboarding when loading an existing whiteboard
+           (when-not new-whiteboard? (state/set-onboarding-whiteboard! true))
+           (when-let [db-id (:db/id page)]
+             (recent-handler/add-page-to-recent! db-id click-from-recent?))
+           (if (and whiteboard?  (= (str page-name) (state/get-current-page)) block-id)
+             (state/focus-whiteboard-shape block-id)
+             (let [m (cond->
+                      (default-page-route (str page-name))
+
+                       block-id
+                       (assoc :query-params (if whiteboard?
+                                              {:block-id block-id}
+                                              {:anchor (str "ls-block-" block-id)}))
+
+                       anchor
+                       (assoc :query-params {:anchor anchor})
+
+                       (boolean? push)
+                       (assoc :push push))]
+               (redirect! m)))))))))
 
 (defn get-title
   [name path-params]

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

@@ -204,14 +204,8 @@
                 file-path (:file/path file)
                 delete-file-tx (when file
                                  [[:db.fn/retractEntity [:file/path file-path]]])
-              ;; if other page alias this pagename,
-              ;; then just remove some attrs of this entity instead of retractEntity
-                delete-page-tx (if (and db-based? (ldb/get-alias-source-page @conn page-name))
-                                 (mapv (fn [attribute]
-                                         [:db/retract (:db/id page) attribute])
-                                       db-schema/retract-page-attributes)
-                                 (concat (db-refs->page repo page)
-                                         [[:db.fn/retractEntity (:db/id page)]]))
+                delete-page-tx (concat (db-refs->page repo page)
+                                       [[:db.fn/retractEntity (:db/id page)]])
                 tx-data (concat truncate-blocks-tx-data delete-page-tx delete-file-tx)]
 
             (ldb/transact! conn tx-data