浏览代码

fix: alias always redirect to the source page

No matter whether the alias page has content or not.
Clicking the alias page in its source page's properties redirect to
the alias page though.
Tienson Qin 1 年之前
父节点
当前提交
94ce77e509
共有 3 个文件被更改,包括 16 次插入26 次删除
  1. 13 11
      src/main/frontend/components/block.cljs
  2. 1 1
      src/main/frontend/db.cljs
  3. 2 14
      src/main/frontend/db/model.cljs

+ 13 - 11
src/main/frontend/components/block.cljs

@@ -508,11 +508,16 @@
 (declare page-reference)
 
 (defn open-page-ref
-  [e config page-name redirect-page-name page-name-in-block contents-page? whiteboard-page?]
+  [e config page-name page-name-in-block contents-page? whiteboard-page?]
   (util/stop e)
   (when (not (util/right-click? e))
-    (p/let [redirect-page-name (or redirect-page-name
-                                   (model/get-redirect-page-name page-name (:block/alias? config)))
+    (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)]))]
       (cond
@@ -549,7 +554,7 @@
    page-name-in-block is the overridable name of the page (legacy)
 
    All page-names are sanitized except page-name-in-block"
-  [state config page-name-in-block page-name redirect-page-name page-entity contents-page? children html-export? label whiteboard-page?]
+  [state config page-name-in-block page-name page-entity contents-page? children html-export? label whiteboard-page?]
   (let [*hover? (::hover? state)
         *mouse-down? (::mouse-down? state)
         tag? (:tag? config)
@@ -580,10 +585,10 @@
                            (reset! *mouse-down? true))))
       :on-mouse-up (fn [e]
                      (when @*mouse-down?
-                       (open-page-ref e config page-name redirect-page-name page-name-in-block contents-page? whiteboard-page?)
+                       (open-page-ref e config page-name page-name-in-block contents-page? whiteboard-page?)
                        (reset! *mouse-down? false)))
       :on-key-up (fn [e] (when (and e (= (.-key e) "Enter"))
-                           (open-page-ref e config page-name redirect-page-name page-name-in-block contents-page? whiteboard-page?)))}
+                           (open-page-ref e config page-name page-name-in-block contents-page? whiteboard-page?)))}
      (when-not hide-icon?
        (when-let [icon (pu/get-block-property-value page-entity :icon)]
          [:span.mr-1 (icon/icon icon)]))
@@ -700,19 +705,16 @@
   "Component for a page. `page` argument contains :block/name which can be (un)sanitized page name.
    Keys for `config`:
    - `:preview?`: Is this component under preview mode? (If true, `page-preview-trigger` won't be registered to this `page-cp`)"
-  [{:keys [html-export? redirect-page-name label children contents-page? preview? disable-preview?] :as config} page]
+  [{:keys [html-export? label children contents-page? preview? disable-preview?] :as config} page]
   (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/entity [:block/name page-name])
           whiteboard-page? (model/whiteboard-page? page-name)
-          redirect-page-name (and (= :org (state/get-preferred-format))
-                                  (:org-mode/insert-file-link? (state/get-config))
-                                  redirect-page-name)
           inner (page-inner config
                             page-name-in-block
                             page-name
-                            redirect-page-name page-entity contents-page? children html-export? label whiteboard-page?)
+                            page-entity contents-page? children html-export? label whiteboard-page?)
           modal? (:modal/show? @state/state)]
       (if (and (not (util/mobile?))
                (not preview?)

+ 1 - 1
src/main/frontend/db.cljs

@@ -42,7 +42,7 @@
   get-page-referenced-blocks get-page-referenced-blocks-full get-page-referenced-pages
   get-all-pages get-pages-relation get-pages-that-mentioned-page get-tag-pages
   journal-page? page-alias-set sub-block
-  set-file-last-modified-at! page-empty? page-exists? page-empty-or-dummy? get-alias-source-page
+  set-file-last-modified-at! page-empty? page-exists? get-alias-source-page
   set-file-content! has-children? get-namespace-pages get-all-namespace-relation]
 
  [frontend.db.react

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

@@ -465,15 +465,6 @@ independent of format as format specific heading characters are stripped"
   (when-let [db (conn/get-db repo)]
     (ldb/page-empty? db page-id)))
 
-(defn page-empty-or-dummy?
-  [repo page-id]
-  (or
-   (page-empty? repo page-id)
-   (when-let [db (conn/get-db repo)]
-     (let [datoms (d/datoms db :avet :block/page page-id)]
-       (and (= (count datoms) 1)
-            (= "" (:block/content (db-utils/pull (:e (first datoms))))))))))
-
 (defn parents-collapsed?
   [repo block-uuid]
   (when-let [block (:block/parent (get-block-parents-v2 repo block-uuid))]
@@ -585,13 +576,10 @@ independent of format as format specific heading characters are stripped"
            (util/page-name-sanity-lc journal-name)
            page-name)
 
-         (page-empty-or-dummy? (state/get-current-repo) (:db/id page-entity))
+         :else
          (let [source-page (get-alias-source-page (state/get-current-repo) page-name')]
            (or (when source-page (:block/name source-page))
-               page-name'))
-
-         :else
-         page-name')))))
+               page-name')))))))
 
 (defn get-page-original-name
   [page-name]