浏览代码

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)
 (declare page-reference)
 
 
 (defn open-page-ref
 (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)
   (util/stop e)
   (when (not (util/right-click? 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
             page (when redirect-page-name
                    (db-async/<pull (state/get-current-repo) [:block/name (util/page-name-sanity-lc redirect-page-name)]))]
                    (db-async/<pull (state/get-current-repo) [:block/name (util/page-name-sanity-lc redirect-page-name)]))]
       (cond
       (cond
@@ -549,7 +554,7 @@
    page-name-in-block is the overridable name of the page (legacy)
    page-name-in-block is the overridable name of the page (legacy)
 
 
    All page-names are sanitized except page-name-in-block"
    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)
   (let [*hover? (::hover? state)
         *mouse-down? (::mouse-down? state)
         *mouse-down? (::mouse-down? state)
         tag? (:tag? config)
         tag? (:tag? config)
@@ -580,10 +585,10 @@
                            (reset! *mouse-down? true))))
                            (reset! *mouse-down? true))))
       :on-mouse-up (fn [e]
       :on-mouse-up (fn [e]
                      (when @*mouse-down?
                      (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)))
                        (reset! *mouse-down? false)))
       :on-key-up (fn [e] (when (and e (= (.-key e) "Enter"))
       :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-not hide-icon?
        (when-let [icon (pu/get-block-property-value page-entity :icon)]
        (when-let [icon (pu/get-block-property-value page-entity :icon)]
          [:span.mr-1 (icon/icon 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.
   "Component for a page. `page` argument contains :block/name which can be (un)sanitized page name.
    Keys for `config`:
    Keys for `config`:
    - `:preview?`: Is this component under preview mode? (If true, `page-preview-trigger` won't be registered to this `page-cp`)"
    - `: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)]
   (when-let [page-name-in-block (:block/name page)]
     (let [page-name-in-block (common-util/remove-boundary-slashes page-name-in-block)
     (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-name (util/page-name-sanity-lc page-name-in-block)
           page-entity (db/entity [:block/name page-name])
           page-entity (db/entity [:block/name page-name])
           whiteboard-page? (model/whiteboard-page? 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
           inner (page-inner config
                             page-name-in-block
                             page-name-in-block
                             page-name
                             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)]
           modal? (:modal/show? @state/state)]
       (if (and (not (util/mobile?))
       (if (and (not (util/mobile?))
                (not preview?)
                (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-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
   get-all-pages get-pages-relation get-pages-that-mentioned-page get-tag-pages
   journal-page? page-alias-set sub-block
   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]
   set-file-content! has-children? get-namespace-pages get-all-namespace-relation]
 
 
  [frontend.db.react
  [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)]
   (when-let [db (conn/get-db repo)]
     (ldb/page-empty? db page-id)))
     (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?
 (defn parents-collapsed?
   [repo block-uuid]
   [repo block-uuid]
   (when-let [block (:block/parent (get-block-parents-v2 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)
            (util/page-name-sanity-lc journal-name)
            page-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')]
          (let [source-page (get-alias-source-page (state/get-current-repo) page-name')]
            (or (when source-page (:block/name source-page))
            (or (when source-page (:block/name source-page))
-               page-name'))
-
-         :else
-         page-name')))))
+               page-name')))))))
 
 
 (defn get-page-original-name
 (defn get-page-original-name
   [page-name]
   [page-name]