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