diff --git a/src/main/frontend/db/rtc/op_idb_layer.cljs b/src/main/frontend/db/rtc/op_idb_layer.cljs index f6d6d46fe3..52d4c4ce75 100644 --- a/src/main/frontend/db/rtc/op_idb_layer.cljs +++ b/src/main/frontend/db/rtc/op_idb_layer.cljs @@ -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 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 (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)))))))) diff --git a/src/test/frontend/db/rtc/op_mem_layer_test.cljs b/src/test/frontend/db/rtc/op_mem_layer_test.cljs index 260e223749..eecbafa031 100644 --- a/src/test/frontend/db/rtc/op_mem_layer_test.cljs +++ b/src/test/frontend/db/rtc/op_mem_layer_test.cljs @@ -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)] (c (with-redefs [state/enable-rtc? (constantly true)] - (op-layer/c (op-layer/ops