mirror of
https://github.com/logseq/logseq.git
synced 2026-06-01 19:01:22 +00:00
fix: view blocks not deleted
This commit is contained in:
@@ -190,7 +190,6 @@
|
||||
[db-after db-before tx-data]
|
||||
(->> tx-data
|
||||
remove-ignored-attrs
|
||||
db-normalize/replace-attr-retract-with-retract-entity
|
||||
(db-normalize/normalize-tx-data db-after db-before)))
|
||||
|
||||
(defn- reverse-tx-data
|
||||
@@ -340,7 +339,7 @@
|
||||
[db deleted-ids tx-data]
|
||||
(let [tx-data (vec tx-data)
|
||||
sanitized-tx-data (->> tx-data
|
||||
db-normalize/replace-attr-retract-with-retract-entity-v2
|
||||
;; db-normalize/replace-attr-retract-with-retract-entity-v2
|
||||
(keep-last-update db)
|
||||
(drop-invalid-refs deleted-ids))]
|
||||
(when (not= tx-data sanitized-tx-data)
|
||||
@@ -605,8 +604,7 @@
|
||||
local-txs (pending-txs repo)
|
||||
reversed-tx-data (->> local-txs
|
||||
(mapcat :reversed-tx)
|
||||
reverse
|
||||
db-normalize/replace-attr-retract-with-retract-entity-v2)
|
||||
reverse)
|
||||
has-local-changes? (seq reversed-tx-data)
|
||||
*rebased-tx-data (atom [])
|
||||
*remote-tx-report (atom nil)
|
||||
@@ -620,12 +618,15 @@
|
||||
;; 1. reverse local pending txs
|
||||
reversed-tx-report (when has-local-changes?
|
||||
(ldb/transact! temp-conn reversed-tx-data tx-meta))
|
||||
_ (prn :debug :tx-data (distinct tx-data))
|
||||
;; 2. transact remote tx-data
|
||||
remote-tx-report (ldb/transact! temp-conn tx-data tx-meta)
|
||||
_ (reset! *remote-tx-report remote-tx-report)
|
||||
remote-received-tx-data (sync-compare/filter-received-tx-data remote-tx-report tx-data)
|
||||
remote-applied-tx-data (sync-compare/filter-applied-tx-data remote-tx-report)]
|
||||
(when (not= remote-received-tx-data remote-applied-tx-data)
|
||||
(prn :diff-tx-data-mismatch
|
||||
(data/diff remote-received-tx-data remote-applied-tx-data))
|
||||
(fail-fast :db-sync/compare-tx-data-mismatch
|
||||
{:repo repo
|
||||
:tx-data tx-data
|
||||
|
||||
@@ -464,7 +464,8 @@
|
||||
(defn transact-pipeline
|
||||
"Compute extra tx-data and block/refs, should ensure it's a pure function and
|
||||
doesn't call `d/transact!` or `ldb/transact!`."
|
||||
[repo {:keys [db-after tx-meta] :as tx-report}]
|
||||
[repo {:keys [db-before db-after tx-meta] :as tx-report}]
|
||||
(prn :debug :pipeline)
|
||||
(let [extra-tx-data (compute-extra-tx-data tx-report)
|
||||
tx-report* (if (seq extra-tx-data)
|
||||
(let [result (d/with db-after extra-tx-data)]
|
||||
@@ -474,7 +475,12 @@
|
||||
tx-report)
|
||||
{:keys [pages blocks]} (ds-report/get-blocks-and-pages tx-report*)
|
||||
deleted-blocks (outliner-pipeline/filter-deleted-blocks (:tx-data tx-report*))
|
||||
deleted-block-ids (set (map :db/id deleted-blocks))
|
||||
delete-views (mapcat
|
||||
(fn [item]
|
||||
(let [block (d/entity db-before (:db/id item))]
|
||||
(:logseq.property/_view-for block)))
|
||||
deleted-blocks)
|
||||
deleted-block-ids (set (map :db/id (concat deleted-blocks delete-views)))
|
||||
blocks' (remove (fn [b] (deleted-block-ids (:db/id b))) blocks)
|
||||
block-refs (when (seq blocks')
|
||||
(rebuild-block-refs repo tx-report* blocks'))
|
||||
@@ -487,7 +493,8 @@
|
||||
(when (:block/uuid (d/entity db-after db-id))
|
||||
{:db/id db-id
|
||||
:block/tx-id tx-id}))) updated-blocks))
|
||||
block-refs-tx-id-data (concat block-refs tx-id-data)
|
||||
delete-views-tx-data (map (fn [b] [:db/retractEntity (:db/id b)]) delete-views)
|
||||
block-refs-tx-id-data (concat delete-views-tx-data block-refs tx-id-data)
|
||||
replace-tx-report (when (seq block-refs-tx-id-data)
|
||||
(d/with (:db-after tx-report*) block-refs-tx-id-data))
|
||||
tx-report' (or replace-tx-report tx-report*)
|
||||
|
||||
Reference in New Issue
Block a user