Browse Source

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 year ago
parent
commit
94ce77e509
3 changed files with 16 additions and 26 deletions
  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]