فهرست منبع

fix: jump to the source page if the alias page is empty

Tienson Qin 4 سال پیش
والد
کامیت
41e05b970d
3فایلهای تغییر یافته به همراه18 افزوده شده و 5 حذف شده
  1. 8 4
      src/main/frontend/components/block.cljs
  2. 1 1
      src/main/frontend/db.cljs
  3. 9 0
      src/main/frontend/db/model.cljs

+ 8 - 4
src/main/frontend/components/block.cljs

@@ -377,7 +377,7 @@
                                (:block/alias? config)
                                page
 
-                               (db/page-empty? (state/get-current-repo) (:db/id page-entity))
+                               (db/page-empty-or-dummy? (state/get-current-repo) (:db/id page-entity))
                                (let [source-page (model/get-alias-source-page (state/get-current-repo)
                                                                               (string/lower-case page-name))]
                                  (or (when source-page (:block/name source-page))
@@ -396,10 +396,14 @@
                                           :font-weight    500
                                           :max-height     600
                                           :padding-bottom 64}}
-                                 [:h2.font-bold.text-lg page-name]
-                                 (let [page (db/entity [:block/name (string/lower-case page-name)])]
+                                 [:h2.font-bold.text-lg (if (= page redirect-page-name)
+                                                          page
+                                                          [:span
+                                                           [:span.text-sm.mr-2 "Alias:" ]
+                                                           redirect-page-name])]
+                                 (let [page (db/entity [:block/name (string/lower-case redirect-page-name)])]
                                    (when-let [f (state/get-page-blocks-cp)]
-                                     (f (state/get-current-repo) page {:sidebar? sidebar? :preview? true})))]
+                                     (f (state/get-current-repo) redirect-page-name {:sidebar? sidebar? :preview? true})))]
                    :interactive true
                    :delay       1000}
                   inner)

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

@@ -50,7 +50,7 @@
   get-page-referenced-blocks get-page-referenced-pages get-page-unlinked-references get-page-referenced-blocks-no-cache
   get-pages get-pages-relation get-pages-that-mentioned-page get-public-pages get-tag-pages
   journal-page? local-native-fs? mark-repo-as-cloned! page-alias-set page-blocks-transform pull-block
-  set-file-last-modified-at! transact-files-db! with-block-refs-count get-modified-pages page-empty? get-alias-source-page
+  set-file-last-modified-at! transact-files-db! with-block-refs-count get-modified-pages page-empty? page-empty-or-dummy? get-alias-source-page
   set-file-content! has-children?]
 
  [frontend.db.react

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

@@ -471,6 +471,15 @@
   [repo page-id]
   (zero? (get-page-blocks-count repo page-id)))
 
+(defn page-empty-or-dummy?
+  [repo page-id]
+  (or
+   (page-empty? repo page-id)
+   (when-let [db (conn/get-conn repo)]
+     (let [datoms (d/datoms db :avet :block/page page-id)]
+       (and (= (count datoms) 1)
+            (= "" (:block/content (db-utils/pull (:e (first datoms))))))))))
+
 (defn get-block-parent
   ([block-id]
    (get-block-parent (state/get-current-repo) block-id))