enhance: hide references view when there's no ref

This commit is contained in:
Tienson Qin
2025-04-01 15:50:14 +08:00
parent 032c6b9fb2
commit b836bde0a3
2 changed files with 45 additions and 14 deletions

View File

@@ -9,10 +9,12 @@
[frontend.db-mixins :as db-mixins]
[frontend.db.async :as db-async]
[frontend.db.utils :as db-utils]
[frontend.hooks :as hooks]
[frontend.state :as state]
[frontend.ui :as ui]
[logseq.db.frontend.view :as db-view]
[logseq.shui.ui :as shui]
[promesa.core :as p]
[rum.core :as rum]))
;; TODO: merge both page and block linked refs
@@ -71,20 +73,36 @@
:additional-actions [reference-filter]
:columns (views/build-columns {} [] {})})))
(rum/defc references < rum/reactive db-mixins/query
(rum/defc references
[entity]
(ui/catch-error
(ui/component-error (if (config/db-based-graph? (state/get-current-repo))
"Linked References: Unexpected error."
"Linked References: Unexpected error. Please re-index your graph first."))
(when-let [block-entity (db/sub-block (:db/id entity))]
(references-cp block-entity))))
(when-let [id (:db/id entity)]
(let [[has-references? set-has-references!] (hooks/use-state nil)]
(hooks/use-effect!
(fn []
(p/let [result (state/<invoke-db-worker :thread-api/block-refs-check (state/get-current-repo)
id {})]
(set-has-references! result)))
[])
(when has-references?
(ui/catch-error
(ui/component-error (if (config/db-based-graph? (state/get-current-repo))
"Linked References: Unexpected error."
"Linked References: Unexpected error. Please re-index your graph first."))
(references-cp entity))))))
(rum/defc unlinked-references
[page]
(when page
(views/view
{:view-parent page
:view-feature-type :unlinked-references
:columns (views/build-columns {} [] {})
:foldable-options {:default-collapsed? true}})))
[entity]
(when-let [id (:db/id entity)]
(let [[has-references? set-has-references!] (hooks/use-state nil)]
(hooks/use-effect!
(fn []
(p/let [result (state/<invoke-db-worker :thread-api/block-refs-check (state/get-current-repo)
id {:unlinked? true})]
(set-has-references! result)))
[])
(when has-references?
(views/view
{:view-parent entity
:view-feature-type :unlinked-references
:columns (views/build-columns {} [] {})
:foldable-options {:default-collapsed? true}})))))

View File

@@ -495,6 +495,19 @@
(when-let [conn (worker-state/get-datascript-conn repo)]
(ldb/get-block-refs-count @conn id)))
(def-thread-api :thread-api/block-refs-check
[repo id {:keys [unlinked?]}]
(when-let [conn (worker-state/get-datascript-conn repo)]
(let [db @conn
block (d/entity db id)]
(if unlinked?
(let [title (string/lower-case (:block/title block))]
(when-not (string/blank? title)
(->> (d/datoms db :avet :block/title)
(some (fn [d]
(and (not= id (:e d)) (string/includes? (string/lower-case (:v d)) title)))))))
(some? (first (:block/_refs block)))))))
(def-thread-api :thread-api/get-block-parents
[repo id depth]
(when-let [conn (worker-state/get-datascript-conn repo)]