From 9d292435c8f4a6ed6d6389aa8caab0afc05ebceb Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Wed, 15 Apr 2026 04:37:32 +0800 Subject: [PATCH] fix: keep property ops uuid-only --- .../test/logseq/outliner/op_test.cljs | 20 +++++++++++++++++++ src/main/frontend/handler/page.cljs | 2 +- src/main/frontend/handler/property.cljs | 10 ++++------ src/test/frontend/worker/db_sync_test.cljs | 2 +- src/test/frontend/worker/undo_redo_test.cljs | 4 ++-- 5 files changed, 28 insertions(+), 10 deletions(-) diff --git a/deps/outliner/test/logseq/outliner/op_test.cljs b/deps/outliner/test/logseq/outliner/op_test.cljs index e3803ba10a..3c83120dd1 100644 --- a/deps/outliner/test/logseq/outliner/op_test.cljs +++ b/deps/outliner/test/logseq/outliner/op_test.cljs @@ -100,6 +100,26 @@ (is (= "some content" (:block/title (:plugin.property._test_plugin/x8 block')))))))) +(deftest remove-block-property-op-rejects-lookup-ref-block-id-test + (testing "remove-block-property rejects lookup-ref block ids" + (let [conn (db-test/create-conn-with-blocks + [{:page {:block/title "Test"} + :blocks [{:block/title "Block"}]}]) + block (db-test/find-block-by-content @conn "Block") + block-uuid (:block/uuid block)] + (outliner-property/set-block-property! conn + [:block/uuid block-uuid] + :logseq.property/order-list-type + "number") + (is (some? (:logseq.property/order-list-type + (d/entity @conn [:block/uuid block-uuid])))) + (is (thrown? js/Error + (outliner-op/apply-ops! + conn + [[:remove-block-property [[:block/uuid block-uuid] + :logseq.property/order-list-type]]] + {})))))) + (deftest direct-plugin-many-page-property-appends-values-test (testing "direct property operations keep both page values" (let [conn (db-test/create-conn-with-blocks diff --git a/src/main/frontend/handler/page.cljs b/src/main/frontend/handler/page.cljs index 7903b61fea..74504bb5c1 100644 --- a/src/main/frontend/handler/page.cljs +++ b/src/main/frontend/handler/page.cljs @@ -135,7 +135,7 @@ (defn update-public-attribute! [page value] - (db-property-handler/set-block-property! [:block/uuid (:block/uuid page)] :logseq.property/publishing-public? value)) + (db-property-handler/set-block-property! (:block/uuid page) :logseq.property/publishing-public? value)) (defn get-page-ref-text [page] diff --git a/src/main/frontend/handler/property.cljs b/src/main/frontend/handler/property.cljs index 5a4d1487ee..ee72a2e66d 100644 --- a/src/main/frontend/handler/property.cljs +++ b/src/main/frontend/handler/property.cljs @@ -7,16 +7,14 @@ (defn remove-block-property! [block-id property-id-or-key] (assert (some? property-id-or-key) "remove-block-property! remove-block-property! is nil") - (let [eid (if (uuid? block-id) [:block/uuid block-id] block-id)] - (db-property-handler/remove-block-property! eid property-id-or-key))) + (db-property-handler/remove-block-property! block-id property-id-or-key)) (defn set-block-property! [block-id key v] (assert (some? key) "set-block-property! key is nil") - (let [eid (if (uuid? block-id) [:block/uuid block-id] block-id)] - (if (or (nil? v) (and (coll? v) (empty? v))) - (db-property-handler/remove-block-property! eid key) - (db-property-handler/set-block-property! eid key v)))) + (if (or (nil? v) (and (coll? v) (empty? v))) + (db-property-handler/remove-block-property! block-id key) + (db-property-handler/set-block-property! block-id key v))) (defn batch-remove-block-property! [block-ids key] diff --git a/src/test/frontend/worker/db_sync_test.cljs b/src/test/frontend/worker/db_sync_test.cljs index b78c42c165..ef0eac7945 100644 --- a/src/test/frontend/worker/db_sync_test.cljs +++ b/src/test/frontend/worker/db_sync_test.cljs @@ -2320,7 +2320,7 @@ :block/order "a0"} nil]]] :db-sync/inverse-outliner-ops - [[:remove-block-property [[:block/uuid source-uuid] + [[:remove-block-property [source-uuid :logseq.property/query]] [:delete-blocks [[[:block/uuid query-block-uuid]] {}]]] diff --git a/src/test/frontend/worker/undo_redo_test.cljs b/src/test/frontend/worker/undo_redo_test.cljs index d295498c67..255ccb82c8 100644 --- a/src/test/frontend/worker/undo_redo_test.cljs +++ b/src/test/frontend/worker/undo_redo_test.cljs @@ -554,7 +554,7 @@ (let [conn (worker-state/get-datascript-conn test-repo) block-uuid (:block/uuid (db-test/find-block-by-content @conn "task"))] (apply-ops! conn - [[:set-block-property [[:block/uuid block-uuid] + [[:set-block-property [block-uuid :logseq.property/status :logseq.property/status.todo]]] (local-tx-meta {:client-id "test-client"})) @@ -1120,7 +1120,7 @@ (local-tx-meta {:client-id "test-client"})) (worker-undo-redo/clear-history! test-repo) (apply-ops! conn - [[:set-block-property [[:block/uuid child-uuid] + [[:set-block-property [child-uuid property-id "value-1"]]] (local-tx-meta {:client-id "test-client"}))