Explorar o código

fix: remove all the attributes when deleting :default property

Tienson Qin hai 1 ano
pai
achega
16c553ed54

+ 11 - 6
src/main/frontend/modules/outliner/pipeline.cljs

@@ -35,12 +35,17 @@
 
           :else
           (do
-            (let [tx-data' (if (contains? #{:create-property-text-block :insert-blocks} (:outliner-op tx-meta))
-                             (let [update-blocks-fully-loaded (keep (fn [datom] (when (= :block/uuid (:a datom))
-                                                                                  {:db/id (:e datom)
-                                                                                   :block.temp/fully-loaded? true})) tx-data)]
-                               (concat update-blocks-fully-loaded tx-data))
-                             tx-data)]
+            (let [tx-data' (concat
+                            (map
+                             (fn [id]
+                               [:db/retractEntity [:block/uuid id]])
+                             deleted-block-uuids)
+                            (if (contains? #{:create-property-text-block :insert-blocks} (:outliner-op tx-meta))
+                              (let [update-blocks-fully-loaded (keep (fn [datom] (when (= :block/uuid (:a datom))
+                                                                                   {:db/id (:e datom)
+                                                                                    :block.temp/fully-loaded? true})) tx-data)]
+                                (concat update-blocks-fully-loaded tx-data))
+                              tx-data))]
               (d/transact! conn tx-data' tx-meta))
 
             (when-not (:graph/importing @state/state)

+ 7 - 4
src/main/frontend/worker/pipeline.cljs

@@ -85,14 +85,17 @@
                       (when (d/entity @conn page-id)
                         (file/sync-to-file repo page-id tx-meta)))))
               deleted-block-uuids (set (outliner-pipeline/filter-deleted-blocks (:tx-data tx-report)))
-              block-refs (rebuild-block-refs tx-report blocks)
+              blocks' (remove (fn [b] (deleted-block-uuids (:block/uuid b))) blocks)
+              block-refs (when (seq blocks')
+                           (rebuild-block-refs tx-report blocks'))
               refs-tx-report (when (seq block-refs)
                                (ldb/transact! conn block-refs {:pipeline-replace? true}))
               replace-tx (concat
                           ;; block path refs
-                          (let [db-after (or (:db-after refs-tx-report) (:db-after tx-report))
-                                blocks' (map (fn [b] (or (d/entity db-after (:db/id b)) b)) blocks)]
-                            (set (compute-block-path-refs-tx tx-report blocks')))
+                          (when (seq blocks')
+                            (let [db-after (or (:db-after refs-tx-report) (:db-after tx-report))
+                                  blocks' (map (fn [b] (or (d/entity db-after (:db/id b)) b)) blocks)]
+                              (set (compute-block-path-refs-tx tx-report blocks'))))
 
                           ;; update block/tx-id
                           (let [updated-blocks (remove (fn [b] (contains? (set deleted-block-uuids) (:block/uuid b)))