enhance: users can navigate to public built-in nodes like task ones

We spent a good amount of effort making tasks customizable. It should
be easy for users to navigate to Task or status page to customize them
pull/11483/head
Gabriel Horner 2024-08-22 10:33:34 -04:00
parent 8074b6a989
commit e8ab1cea49
7 changed files with 25 additions and 10 deletions

View File

@ -15,7 +15,8 @@
[logseq.db.frontend.rules :as rules]
[logseq.db.sqlite.common-db :as sqlite-common-db]
[logseq.db.sqlite.util :as sqlite-util]
[logseq.db.frontend.content :as db-content]))
[logseq.db.frontend.content :as db-content]
[logseq.db.frontend.property :as db-property]))
;; Use it as an input argument for datalog queries
(def block-attrs
@ -94,6 +95,7 @@
(def whiteboard? sqlite-util/whiteboard?)
(def journal? sqlite-util/journal?)
(def hidden? sqlite-util/hidden?)
(def public-built-in-property? db-property/public-built-in-property?)
(defn sort-by-order
[blocks]

View File

@ -6,4 +6,4 @@
"Whether the current graph is db-only"
[db]
(when db
(= "db" (:kv/value (d/entity db :logseq.kv/db-type)))))
(= "db" (:kv/value (d/entity db :logseq.kv/db-type)))))

View File

@ -319,3 +319,9 @@
[(:block/title (d/entity db k))
(ref->property-value-contents db v)]))
(into {})))
(defn public-built-in-property?
"Indicates whether built-in property can be seen and edited by users"
[entity]
;; No need to do :built-in? check yet since user properties can't set this
(get-in entity [:block/schema :public?]))

View File

@ -257,7 +257,7 @@
repo (state/get-current-repo)
current-page (when-let [id (page-util/get-current-page-id)]
(db/entity id))
opts {:limit 100 :built-in? config/dev?}]
opts {:limit 100 :dev? config/dev? :built-in? true}]
(swap! !results assoc-in [group :status] :loading)
(swap! !results assoc-in [:current-page :status] :loading)
(p/let [blocks (search/block-search repo @!input opts)

View File

@ -147,7 +147,7 @@
;; existing property selected or entered
(if property
(do
(when (and (not (get-in property [:block/schema :public?]))
(when (and (not (ldb/public-built-in-property? property))
(ldb/built-in? property))
(notification/show! "This is a private built-in property that can't be used." :error))
property)
@ -865,7 +865,7 @@
(when-let [ent (db/entity id)]
(or
;; built-in
(and (not (get-in ent [:block/schema :public?]))
(and (not (ldb/public-built-in-property? ent))
;; TODO: Use ldb/built-in? when intermittent lazy loading issue fixed
(get db-property/built-in-properties (:db/ident ent)))
;; other position

View File

@ -62,7 +62,7 @@
;; remove private built-in properties
(remove #(and (:db/ident %)
(db-property/logseq-property? (:db/ident %))
(not (get-in % [:block/schema :public?])))))))
(not (ldb/public-built-in-property? %)))))))
(defn <get-all-properties
"Returns all public properties as property maps including their

View File

@ -253,9 +253,10 @@ DROP TRIGGER IF EXISTS blocks_au;
"Options:
* :page - the page to specifically search on
* :limit - Number of result to limit search results. Defaults to 100
* :built-in? - Whether to return built-in pages for db graphs. Defaults to false"
[repo conn search-db q {:keys [limit page enable-snippet?
built-in?] :as option
* :dev? - Allow all nodes to be seen for development. Defaults to false
* :built-in? - Whether to return public built-in nodes for db graphs. Defaults to false"
[repo conn search-db q {:keys [limit page enable-snippet? built-in? dev?]
:as option
:or {enable-snippet? true}}]
(when-not (string/blank? q)
(p/let [match-input (get-match-input q)
@ -280,7 +281,13 @@ DROP TRIGGER IF EXISTS blocks_au;
(let [{:keys [id page title snippet]} result
block-id (uuid id)]
(when-let [block (d/entity @conn [:block/uuid block-id])]
(when-not (and (not built-in?) (ldb/built-in? block))
(when (if dev?
true
(if built-in?
(or (not (ldb/built-in? block))
(ldb/class? block)
(ldb/public-built-in-property? block))
(not (ldb/built-in? block))))
{:db/id (:db/id block)
:block/uuid block-id
:block/title (or snippet title)