From 3a02014ebb8257f5bfad6820be1bba06c3ebf2c2 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Tue, 14 Apr 2026 13:55:42 +0800 Subject: [PATCH] fix: avoid task status default flicker on tagged nodes --- .../frontend/components/property/value.cljs | 30 +++++++++++-------- .../components/property/value_test.cljs | 18 +++++++++++ 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/src/main/frontend/components/property/value.cljs b/src/main/frontend/components/property/value.cljs index 3c70a401a5..e7614dbbe9 100644 --- a/src/main/frontend/components/property/value.cljs +++ b/src/main/frontend/components/property/value.cljs @@ -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 diff --git a/src/test/frontend/components/property/value_test.cljs b/src/test/frontend/components/property/value_test.cljs index e832283269..cfd3fa30a7 100644 --- a/src/test/frontend/components/property/value_test.cljs +++ b/src/test/frontend/components/property/value_test.cljs @@ -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)))))