fix: :batch/txs should be vector not nil

pull/11293/head
rcmerci 2024-04-19 19:47:22 +08:00
parent bbe9e9d323
commit cccb4fcb0b
5 changed files with 49 additions and 19 deletions

View File

@ -37,10 +37,10 @@
(defn conj-batch-txs!
[tx-data]
(swap! worker-state/*state update :batch/txs (fn [data] (into data tx-data))))
(swap! worker-state/*state update :batch/txs (fn [data] ((fnil into []) data tx-data))))
(defn exit-batch-txs-mode!
[]
(swap! worker-state/*state assoc :batch/txs nil)
(swap! worker-state/*state assoc :batch/txs [])
(swap! worker-state/*state assoc :batch/db-before nil)
(swap! worker-state/*state assoc :batch/opts nil))

View File

@ -7,7 +7,8 @@
[frontend.worker.state :as worker-state]
[frontend.worker.util :as worker-util]
[promesa.core :as p]
[frontend.worker.batch-tx :as batch-tx]))
[frontend.worker.batch-tx :as batch-tx]
[frontend.schema-register :as sr]))
(defn- entity-datoms=>attr->datom
@ -34,6 +35,18 @@
(defmulti listen-db-changes
(fn [listen-key & _] listen-key))
(sr/defkeyword :sync-db-to-main-thread
"DB-listener key.
sync worker-db changes to main-thread")
(sr/defkeyword :gen-rtc-ops
"DB-listener key.
generate rtc ops.")
(sr/defkeyword :gen-undo-ops
"DB-listener key.
generate undo ops.")
(defmethod listen-db-changes :sync-db-to-main-thread
[_ {:keys [tx-meta repo conn] :as tx-report}]
(let [{:keys [from-disk?]} tx-meta
@ -50,13 +63,13 @@
(when-not from-disk?
(p/do!
(let [{:keys [blocks-to-remove-set blocks-to-add]} (search/sync-search-indice repo tx-report')
^js wo (worker-state/get-worker-object)]
(when wo
(when (seq blocks-to-remove-set)
(.search-delete-blocks wo repo (bean/->js blocks-to-remove-set)))
(when (seq blocks-to-add)
(.search-upsert-blocks wo repo (bean/->js blocks-to-add))))))))))
(let [{:keys [blocks-to-remove-set blocks-to-add]} (search/sync-search-indice repo tx-report')
^js wo (worker-state/get-worker-object)]
(when wo
(when (seq blocks-to-remove-set)
(.search-delete-blocks wo repo (bean/->js blocks-to-remove-set)))
(when (seq blocks-to-add)
(.search-upsert-blocks wo repo (bean/->js blocks-to-add))))))))))
(defn listen-db-changes!

View File

@ -486,14 +486,16 @@
(defn- move-all-blocks-to-another-page
[repo conn from-page-name to-page-name]
(let [blocks (ldb/get-page-blocks @conn from-page-name {})
from-page-block (some-> (first blocks) :block/page)
target-page-block (d/entity @conn [:block/name to-page-name])]
(when (and (seq blocks) target-page-block)
(outliner-tx/transact!
{:persist-op? true
:gen-undo-ops? false
:transact-opts {:repo repo
:conn conn}}
(outliner-core/move-blocks! repo conn blocks target-page-block false)))))
(let [blocks* (ldb/sort-by-left blocks from-page-block)]
(outliner-tx/transact!
{:persist-op? true
:gen-undo-ops? false
:transact-opts {:repo repo
:conn conn}}
(outliner-core/move-blocks! repo conn blocks* target-page-block false))))))
(defn- empty-page?
"1. page has no child-block

View File

@ -18,3 +18,16 @@
(f)
(d/unlisten! test-db-conn :frontend.worker.db-listener/listen-db-changes!)))
(defn listen-test-db-fixture
[handler-keys]
(fn [f]
(let [test-db-conn (conn/get-db test-helper/test-db-name-db-version false)]
(assert (some? test-db-conn))
(worker-undo-redo/clear-undo-redo-stack)
(worker-db-listener/listen-db-changes! test-helper/test-db-name-db-version test-db-conn
{:handler-keys handler-keys})
(f)
(d/unlisten! test-db-conn :frontend.worker.db-listener/listen-db-changes!))))

View File

@ -12,11 +12,13 @@
[logseq.common.config :as common-config]
[logseq.db :as ldb]
[logseq.outliner.core :as outliner-core]
[logseq.outliner.transaction :as outliner-tx]))
[logseq.outliner.transaction :as outliner-tx]
[frontend.worker.fixtures :as worker-fixtures]))
(use-fixtures :each
test-helper/db-based-start-and-destroy-db-map-fixture)
test-helper/db-based-start-and-destroy-db
(worker-fixtures/listen-test-db-fixture [:sync-db-to-main-thread]))
(deftest filter-remote-data-by-local-unpushed-ops-test
(testing "case1"
@ -477,7 +479,7 @@ server: ;; remove 2
(is (nil? (d/entity @conn [:block/uuid page1-uuid])))))))
(deftest same-name-two-pages-merge-test
(deftest ^:wip same-name-two-pages-merge-test
(let [repo (state/get-current-repo)
conn (conn/get-db repo false)
date-formatter (common-config/get-date-formatter (worker-state/get-config repo))