Tienson Qin 1 год назад
Родитель
Сommit
6329f6e4e7

+ 6 - 2
deps/outliner/src/logseq/outliner/datascript.cljs

@@ -5,7 +5,8 @@
             [logseq.graph-parser.property :as gp-property]
             [datascript.core :as d]
             [clojure.string :as string]
-            [logseq.db :as ldb]))
+            [logseq.db :as ldb]
+            [promesa.core :as p]))
 
 (defn new-outliner-txs-state [] (atom []))
 
@@ -96,7 +97,10 @@
       ;; (cljs.pprint/pprint txs)
 
       (try
-        (ldb/transact! conn txs (assoc tx-meta :outliner/transact? true))
+        (.time js/console "DB transact")
+        (p/let [result (ldb/transact! conn txs (assoc tx-meta :outliner/transact? true))]
+          (.timeEnd js/console "DB transact")
+          result)
         (catch :default e
           (js/console.error e)
           (throw e))))))

+ 3 - 1
src/main/frontend/db_worker.cljs

@@ -110,7 +110,9 @@
                     #js {:$addr addr
                          :$content (pr-str data)})
                   addr+data-seq)]
-        (upsert-addr-content! repo data delete-addrs)))
+        (if (worker-state/rtc-downloading-graph?)
+          (upsert-addr-content! repo data delete-addrs) ; sync writes when downloading whole graph
+          (async/go (upsert-addr-content! repo data delete-addrs)))))
 
     (-restore [_ addr]
       (restore-data-from-addr repo addr))))

+ 3 - 1
src/main/frontend/worker/rtc/full_upload_download_graph.cljs

@@ -144,8 +144,10 @@
      (if (not= 200 status)
        (ex-info "<download-graph failed" r)
        (let [all-blocks (transit/read transit-r body)]
+         (worker-state/set-rtc-downloading-graph! true)
          (op-mem-layer/init-empty-ops-store! repo)
          (<? (<transact-remote-all-blocks-to-sqlite all-blocks repo))
          (op-mem-layer/update-graph-uuid! repo graph-uuid)
          (prn ::download-graph repo (@@#'op-mem-layer/*ops-store repo))
-         (<! (op-mem-layer/<sync-to-idb-layer! repo)))))))
+         (<! (op-mem-layer/<sync-to-idb-layer! repo))
+         (worker-state/set-rtc-downloading-graph! false))))))

+ 10 - 1
src/main/frontend/worker/state.cljs

@@ -10,7 +10,8 @@
 
                        :config {}
                        :git/current-repo nil
-                       :rtc/remote-batch-txs nil}))
+                       :rtc/remote-batch-txs nil
+                       :rtc/downloading-graph? false}))
 
 (defonce *rtc-ws-url (atom nil))
 
@@ -84,3 +85,11 @@
 (defn get-date-formatter
   [repo]
   (common-config/get-date-formatter (get-config repo)))
+
+(defn set-rtc-downloading-graph!
+  [value]
+  (swap! *state assoc :rtc/downloading-graph? value))
+
+(defn rtc-downloading-graph?
+  []
+  (:rtc/downloading-graph? @*state))