mirror of
https://github.com/logseq/logseq.git
synced 2026-05-29 23:19:38 +00:00
enhance: hide references view when there's no ref
This commit is contained in:
@@ -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}})))))
|
||||
|
||||
@@ -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)]
|
||||
|
||||
Reference in New Issue
Block a user