Browse Source

fix: alias references are not displayed in linked references

fix https://github.com/logseq/db-test/issues/292
Tienson Qin 9 months ago
parent
commit
d78bd64467

+ 1 - 13
deps/db/src/logseq/db.cljs

@@ -18,7 +18,6 @@
             [logseq.db.frontend.db :as db-db]
             [logseq.db.frontend.entity-util :as entity-util]
             [logseq.db.frontend.property :as db-property]
-            [logseq.db.frontend.rules :as rules]
             [logseq.db.frontend.schema :as db-schema]
             [logseq.db.sqlite.util :as sqlite-util])
   (:refer-clojure :exclude [object?]))
@@ -422,18 +421,7 @@
       ;; only return the first result for idiot-proof
     (first (:block/_alias (d/entity db alias-id)))))
 
-(defn get-block-alias
-  [db eid]
-  (->>
-   (d/q
-    '[:find [?e ...]
-      :in $ ?eid %
-      :where
-      (alias ?eid ?e)]
-    db
-    eid
-    (:alias rules/rules))
-   distinct))
+(def get-block-alias common-initial-data/get-block-alias)
 
 (defn page-alias-set
   [db page-id]

+ 24 - 5
deps/db/src/logseq/db/common/initial_data.cljs

@@ -9,7 +9,8 @@
             [logseq.db.common.entity-plus :as entity-plus]
             [logseq.db.common.entity-util :as common-entity-util]
             [logseq.db.common.order :as db-order]
-            [logseq.db.frontend.entity-util :as entity-util]))
+            [logseq.db.frontend.entity-util :as entity-util]
+            [logseq.db.frontend.rules :as rules]))
 
 (defn- get-pages-by-name
   [db page-name]
@@ -33,6 +34,19 @@
        sort
        first))
 
+(defn get-block-alias
+  [db eid]
+  (->>
+   (d/q
+    '[:find [?e ...]
+      :in $ ?eid %
+      :where
+      (alias ?eid ?e)]
+    db
+    eid
+    (:alias rules/rules))
+   distinct))
+
 (comment
   (defn- get-built-in-files
     [db]
@@ -163,6 +177,7 @@
         (or
          (= (:db/id ref-block) id)
          (= id (:db/id (:block/page ref-block)))
+         (= id (:db/id (:logseq.property/view-for ref-block)))
          (entity-util/hidden? (:block/page ref-block))
          (entity-util/hidden? ref-block)
          (contains? (set (map :db/id (:block/tags ref-block))) (:db/id entity))
@@ -174,10 +189,14 @@
 (defn get-block-refs-count
   [db id]
   (or
-   (some->> (d/entity db id)
-            :block/_refs
-            (remove (fn [ref-block] (hidden-ref? db ref-block id)))
-            count)
+   (let [with-alias (->> (get-block-alias db id)
+                         (cons id)
+                         distinct)]
+     (some->> with-alias
+              (map #(d/entity db %))
+              (mapcat :block/_refs)
+              (remove (fn [ref-block] (hidden-ref? db ref-block id)))
+              count))
    0))
 
 (defn ^:large-vars/cleanup-todo get-block-and-children

+ 1 - 13
src/main/frontend/worker/db_worker.cljs

@@ -535,19 +535,7 @@
                              (let [refs (map :db/id (:block/refs (d/entity db (:e d))))]
                                (contains? (set refs) (:e d)))))
                       datoms)))))
-        (boolean
-         (some
-          ;; check if there's any entity reference this `block` except the view-entity
-          (fn [ref]
-            (not
-             (or (= id (:db/id (:logseq.property/view-for ref)))
-                 (ldb/hidden? (:block/page ref))
-                 (ldb/hidden? ref)
-                 (and db-based? (contains? (set (map :db/id (:block/tags ref))) id))
-                 (some? (get ref (:db/ident block)))
-                 (= id (:db/id ref))
-                 (= id (:db/id (:block/page ref))))))
-          (:block/_refs block)))))))
+        (> (ldb/get-block-refs-count db (:db/id block)) 0)))))
 
 (def-thread-api :thread-api/get-block-parents
   [repo id depth]