fix: avoid task status default flicker on tagged nodes

This commit is contained in:
Tienson Qin
2026-04-14 13:55:42 +08:00
parent 1e5c7e938f
commit 3a02014ebb
2 changed files with 36 additions and 12 deletions

View File

@@ -1579,6 +1579,23 @@
(when (some? value) #{value}))]
(multiple-values-inner block property value' opts)))
(defn- resolved-property-value-for-render
[block property multiple-values?]
(let [v (get block (:db/ident property))
block-loaded? (some? (:block/uuid block))]
(or
(cond
(and multiple-values? (or (set? v) (coll? v) (nil? v)))
v
multiple-values?
#{v}
(set? v)
(first v)
:else
v)
(when block-loaded?
(:logseq.property/default-value property)))))
(rum/defcs ^:large-vars/cleanup-todo property-value < rum/reactive db-mixins/query
[state block property {:keys [show-tooltip? p-block p-property editing?]
:as opts}]
@@ -1595,18 +1612,7 @@
editor-id (str dom-id "-editor")
type (:logseq.property/type property)
multiple-values? (db-property/many? property)
v (let [v (get block (:db/ident property))]
(or
(cond
(and multiple-values? (or (set? v) (coll? v) (nil? v)))
v
multiple-values?
#{v}
(set? v)
(first v)
:else
v)
(:logseq.property/default-value property)))
v (resolved-property-value-for-render block property multiple-values?)
self-value-or-embedded? (fn [v]
(or (= (:db/id v) (:db/id block))
;; property value self embedded

View File

@@ -47,3 +47,21 @@
(p/catch (fn [error]
(is false (str error))
(done)))))))
(deftest resolved-property-value-for-render-skips-default-for-placeholder-row-test
(let [property {:db/ident :logseq.property/status
:logseq.property/default-value {:db/id 3
:db/ident :logseq.property/status.todo
:block/title "Todo"}}
placeholder-block {:db/id 1}]
(is (nil? (#'property-value/resolved-property-value-for-render placeholder-block property false)))))
(deftest resolved-property-value-for-render-uses-default-for-loaded-block-test
(let [property {:db/ident :logseq.property/status
:logseq.property/default-value {:db/id 3
:db/ident :logseq.property/status.todo
:block/title "Todo"}}
loaded-block {:db/id 1
:block/uuid #uuid "11111111-1111-1111-1111-111111111111"}]
(is (= (:logseq.property/default-value property)
(#'property-value/resolved-property-value-for-render loaded-block property false)))))