Преглед изворни кода

fix: don't create unnecessary linked/unlinked reference views

Tienson Qin пре 7 месеци
родитељ
комит
702255adea
2 измењених фајлова са 18 додато и 13 уклоњено
  1. 11 10
      deps/db/src/logseq/db/common/initial_data.cljs
  2. 7 3
      src/main/frontend/worker/db_worker.cljs

+ 11 - 10
deps/db/src/logseq/db/common/initial_data.cljs

@@ -186,18 +186,19 @@
        (= (:db/id ref-block) id)
        (= id (:db/id (:block/page ref-block)))))))
 
+(defn get-block-refs
+  [db id]
+  (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))))))
+
 (defn get-block-refs-count
   [db id]
-  (or
-   (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))
+  (count (get-block-refs db id)))
 
 (defn ^:large-vars/cleanup-todo get-block-and-children
   [db id-or-page-name {:keys [children? properties include-collapsed-children?]

+ 7 - 3
src/main/frontend/worker/db_worker.cljs

@@ -468,9 +468,13 @@
           block (d/entity db id)]
       (if unlinked?
         (p/let [title (string/lower-case (:block/title block))
-                result (search-blocks repo title {:limit 3})]
-          (boolean (some (fn [b] (not= id (:db/id b))) result)))
-        (some? (first (:block/_refs block)))))))
+                result (search-blocks repo title {:limit 100})]
+          (boolean (some (fn [b]
+                           (let [block (d/entity db (:db/id b))]
+                             (and (not= id (:db/id block))
+                                  (not ((set (map :db/id (:block/refs block))) id))
+                                  (string/includes? (string/lower-case (:block/title block)) title)))) result)))
+        (some? (first (common-initial-data/get-block-refs db (:db/id block))))))))
 
 (def-thread-api :thread-api/get-block-parents
   [repo id depth]