mirror of
https://github.com/logseq/logseq.git
synced 2026-05-28 14:39:48 +00:00
fix(rtc): ensure return a promise
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
(def stores (atom {}))
|
||||
|
||||
(defn- ensure-store
|
||||
"Return nil when 'repo' is not a db-graph"
|
||||
[repo]
|
||||
{:pre [(some? repo)]}
|
||||
(when (config/db-based-graph? repo)
|
||||
@@ -28,20 +29,24 @@
|
||||
(defn <reset!
|
||||
[repo ops graph-uuid local-tx]
|
||||
(p->c
|
||||
(when-let [store (ensure-store repo)]
|
||||
(let [idb-items (ops=>idb-items ops)]
|
||||
(p/do!
|
||||
(idb-keyval/clear store)
|
||||
(idb-keyval/setBatch (clj->js idb-items) store)
|
||||
(when graph-uuid
|
||||
(idb-keyval/set "graph-uuid" graph-uuid store))
|
||||
(when local-tx
|
||||
(idb-keyval/set "local-tx" local-tx store)))))))
|
||||
;; ensure return a promise
|
||||
(p/do!
|
||||
(when-let [store (ensure-store repo)]
|
||||
(let [idb-items (ops=>idb-items ops)]
|
||||
(p/do!
|
||||
(idb-keyval/clear store)
|
||||
(idb-keyval/setBatch (clj->js idb-items) store)
|
||||
(when graph-uuid
|
||||
(idb-keyval/set "graph-uuid" graph-uuid store))
|
||||
(when local-tx
|
||||
(idb-keyval/set "local-tx" local-tx store))))))))
|
||||
|
||||
|
||||
(defn <read
|
||||
[repo]
|
||||
(when-let [store (ensure-store repo)]
|
||||
(p/let [idb-keys (idb-keyval/keys store)]
|
||||
(-> (p/all (mapv (fn [k] (p/chain (idb-keyval/get k store) (partial vector k))) idb-keys))
|
||||
(p/then (fn [items] (mapv #(js->clj % :keywordize-keys true) items)))))))
|
||||
;; ensure return a promise
|
||||
(p/do!
|
||||
(when-let [store (ensure-store repo)]
|
||||
(p/let [idb-keys (idb-keyval/keys store)]
|
||||
(-> (p/all (mapv (fn [k] (p/chain (idb-keyval/get k store) (partial vector k))) idb-keys))
|
||||
(p/then (fn [items] (mapv #(js->clj % :keywordize-keys true) items))))))))
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
[frontend.db.rtc.idb-keyval-mock :include-macros true :as idb-keyval-mock]
|
||||
[frontend.db.rtc.op-idb-layer :as op-idb-layer]
|
||||
[frontend.db.rtc.op-mem-layer :as op-layer]
|
||||
[frontend.state :as state]
|
||||
#_:clj-kondo/ignore ["/frontend/idbkv" :as idb-keyval]))
|
||||
|
||||
(deftest add-ops-to-block-uuid->ops-test
|
||||
@@ -151,8 +150,7 @@
|
||||
(let [repo-ops-store1 (@@#'op-layer/*ops-store repo)]
|
||||
(<! (op-layer/<sync-to-idb-layer! repo))
|
||||
(op-layer/remove-ops-store! repo)
|
||||
(<! (p->c (with-redefs [state/enable-rtc? (constantly true)]
|
||||
(op-layer/<init-load-from-indexeddb! repo))))
|
||||
(<! (p->c (op-layer/<init-load-from-indexeddb! repo)))
|
||||
(let [repo-ops-store2 (@@#'op-layer/*ops-store repo)]
|
||||
(is (= {:current-branch
|
||||
{:block-uuid->ops
|
||||
|
||||
Reference in New Issue
Block a user