mirror of https://github.com/logseq/logseq
fix: built-in pages shouldn't be deleted
Fixes https://github.com/logseq/db-test/issues/91. We still need to add validation before db/transact!, this will be handled in another commit.pull/11526/merge
parent
50816b8497
commit
b826fc5ba9
|
@ -713,18 +713,20 @@
|
|||
[:pre [(seq 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?)
|
||||
top-level-blocks (->> (get-top-level-blocks top-level-blocks non-consecutive?)
|
||||
(remove ldb/page?))
|
||||
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)]
|
||||
(if (or
|
||||
(= 1 (count top-level-blocks))
|
||||
(= start-block end-block))
|
||||
(delete-block conn txs-state start-block)
|
||||
(doseq [id block-ids]
|
||||
(let [node (d/entity @conn id)]
|
||||
(otree/-del node txs-state conn))))
|
||||
(when (seq top-level-blocks)
|
||||
(if (or
|
||||
(= 1 (count top-level-blocks))
|
||||
(= start-block end-block))
|
||||
(delete-block conn txs-state start-block)
|
||||
(doseq [id block-ids]
|
||||
(let [node (d/entity @conn id)]
|
||||
(otree/-del node txs-state conn)))))
|
||||
{:tx-data @txs-state}))
|
||||
|
||||
(defn- move-to-original-position?
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
"Table"
|
||||
(:require [logseq.shui.table.impl :as impl]
|
||||
[dommy.core :refer-macros [sel1]]
|
||||
[cljs-bean.core :as bean]
|
||||
[rum.core :as rum]))
|
||||
|
||||
(defn- get-head-container
|
||||
|
|
|
@ -11,9 +11,9 @@
|
|||
(not (false? (get visible-columns (column-id column)))))
|
||||
|
||||
(defn visible-columns
|
||||
[columns visible-columns]
|
||||
(if (seq visible-columns)
|
||||
(filter #(column-visible? % visible-columns) columns)
|
||||
[columns visible-columns']
|
||||
(if (seq visible-columns')
|
||||
(filter #(column-visible? % visible-columns') columns)
|
||||
columns))
|
||||
|
||||
(defn sort-rows
|
||||
|
@ -58,7 +58,9 @@
|
|||
(sort-rows rows sorting columns))
|
||||
|
||||
(defn rows
|
||||
[{:keys [rows columns sorting row-filter]}]
|
||||
(let [rows' (if row-filter (filter row-filter rows) rows)]
|
||||
[{:keys [columns sorting row-filter]
|
||||
:as opts}]
|
||||
(let [rows' (:rows opts)
|
||||
rows' (if row-filter (filter row-filter rows') rows')]
|
||||
(cond-> rows'
|
||||
(seq sorting) (sort-rows sorting columns))))
|
||||
|
|
|
@ -221,21 +221,23 @@
|
|||
:add-new-object! #(add-new-property-object! property set-data!)
|
||||
;; TODO: Add support for adding column
|
||||
:show-add-property? false
|
||||
:on-delete-rows (fn [table selected-rows]
|
||||
(let [pages (filter ldb/page? selected-rows)
|
||||
blocks (remove ldb/page? selected-rows)]
|
||||
(p/do!
|
||||
(ui-outliner-tx/transact!
|
||||
{:outliner-op :delete-blocks}
|
||||
(when (seq blocks)
|
||||
(outliner-op/delete-blocks! blocks nil))
|
||||
(let [page-ids (map :db/id pages)
|
||||
tx-data (map (fn [pid] [:db/retract pid (:db/ident property)]) page-ids)]
|
||||
(when (seq tx-data)
|
||||
(outliner-op/transact! tx-data {:outliner-op :save-block}))))
|
||||
(set-data! (get-property-related-objects (state/get-current-repo) property))
|
||||
(when-let [f (get-in table [:data-fns :set-row-selection!])]
|
||||
(f {})))))}))))
|
||||
:on-delete-rows (when-not (contains? #{:logseq.property/built-in? :logseq.property/parent}
|
||||
(:db/ident property))
|
||||
(fn [table selected-rows]
|
||||
(let [pages (filter ldb/page? selected-rows)
|
||||
blocks (remove ldb/page? selected-rows)]
|
||||
(p/do!
|
||||
(ui-outliner-tx/transact!
|
||||
{:outliner-op :delete-blocks}
|
||||
(when (seq blocks)
|
||||
(outliner-op/delete-blocks! blocks nil))
|
||||
(let [page-ids (map :db/id pages)
|
||||
tx-data (map (fn [pid] [:db/retract pid (:db/ident property)]) page-ids)]
|
||||
(when (seq tx-data)
|
||||
(outliner-op/transact! tx-data {:outliner-op :save-block}))))
|
||||
(set-data! (get-property-related-objects (state/get-current-repo) property))
|
||||
(when-let [f (get-in table [:data-fns :set-row-selection!])]
|
||||
(f {}))))))}))))
|
||||
|
||||
;; Show all nodes containing the given property
|
||||
(rum/defcs property-related-objects < rum/reactive db-mixins/query mixins/container-id
|
||||
|
|
Loading…
Reference in New Issue