Skip to content

Commit

Permalink
fix: deleting built-in blocks from queries
Browse files Browse the repository at this point in the history
Was possible to delete built-in closed values from queries
like `(property :logseq.property/created-from-property)`
  • Loading branch information
logseq-cldwalker committed Jan 3, 2025
1 parent 2c8aaed commit d1748a1
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 3 deletions.
12 changes: 10 additions & 2 deletions deps/outliner/src/logseq/outliner/core.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -743,13 +743,21 @@
[conn blocks]
(let [top-level-blocks (filter-top-level-blocks @conn blocks)
non-consecutive? (and (> (count top-level-blocks) 1) (seq (ldb/get-non-consecutive-blocks @conn top-level-blocks)))
top-level-blocks (->> (get-top-level-blocks top-level-blocks non-consecutive?)
(remove ldb/page?))
top-level-blocks* (->> (get-top-level-blocks top-level-blocks non-consecutive?)
(remove ldb/page?))
top-level-blocks (remove :logseq.property/built-in? top-level-blocks*)
txs-state (ds/new-outliner-txs-state)
block-ids (map (fn [b] [:block/uuid (:block/uuid b)]) top-level-blocks)
start-block (first top-level-blocks)
end-block (last top-level-blocks)
delete-one-block? (or (= 1 (count top-level-blocks)) (= start-block end-block))]

;; Validate before `when` since top-level-blocks will be empty when deleting one built-in block
(when (seq (filter :logseq.property/built-in? top-level-blocks*))
(throw (ex-info "Built-in nodes can't be deleted"
{:type :notification
:payload {:message "Built-in nodes can't be deleted"
:type :error}})))
(when (seq top-level-blocks)
(let [from-property (:logseq.property/created-from-property start-block)
default-value-property? (and (:logseq.property/default-value from-property)
Expand Down
2 changes: 1 addition & 1 deletion src/main/frontend/components/query/view.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
:on-delete-rows (fn [table selected-rows]
(let [pages (filter ldb/page? selected-rows)
blocks (remove ldb/page? selected-rows)
selected (set (map :id selected-rows))
selected (set (map :id (remove :logseq.property/built-in? selected-rows)))
data' (remove (fn [row] (contains? selected (:id row))) (:data table))]
(p/do!
(set-data! data')
Expand Down

0 comments on commit d1748a1

Please sign in to comment.