Преглед на файлове

replace rtc calls with worker apis

Tienson Qin преди 1 година
родител
ревизия
a759c8c58c
променени са 4 файла, в които са добавени 73 реда и са изтрити 40 реда
  1. 6 7
      src/main/frontend/components/content.cljs
  2. 15 16
      src/main/frontend/db/rtc/debug_ui.cljs
  3. 20 4
      src/main/frontend/db_worker.cljs
  4. 32 13
      src/main/frontend/worker/rtc/core.cljs

+ 6 - 7
src/main/frontend/components/content.cljs

@@ -27,12 +27,11 @@
             [goog.object :as gobj]
             [rum.core :as rum]
             [frontend.config :as config]
-            [frontend.worker.rtc.core :as rtc-core]
-            [frontend.db.rtc.debug-ui :as rtc-debug-ui]
-            [cljs.core.async :as async]
             [cljs.pprint :as pp]
             [cljs-time.coerce :as tc]
-            [promesa.core :as p]))
+            [promesa.core :as p]
+            [cljs-bean.core :as bean]
+            [frontend.persist-db.browser :as db-browser]))
 
 ;; TODO i18n support
 
@@ -314,9 +313,9 @@
             {:key "(Dev) Show block content history"
              :on-click
              (fn []
-               (async/go
-                 (let [blocks-versions
-                       (async/<! (rtc-core/<get-block-content-versions @rtc-debug-ui/debug-state block-id))]
+               (let [^object worker @db-browser/*worker]
+                 (p/let [result (.rtc-get-block-content-versions worker block-id)
+                         blocks-versions (bean/->clj result)]
                    (prn :Dev-show-block-content-history)
                    (doseq [[block-uuid versions] blocks-versions]
                      (prn :block-uuid block-uuid)

+ 15 - 16
src/main/frontend/db/rtc/debug_ui.cljs

@@ -1,11 +1,8 @@
 (ns frontend.db.rtc.debug-ui
   "Debug UI for rtc module"
-  (:require-macros
-   [frontend.worker.rtc.macro :refer [with-sub-data-from-ws get-req-id get-result-ch]])
-  (:require [cljs.core.async :as async :refer [<! go]]
+  (:require [cljs.core.async :as async :refer [go]]
             [fipp.edn :as fipp]
             [frontend.db :as db]
-            [frontend.worker.rtc.core :as rtc-core]
             [frontend.worker.rtc.op-mem-layer :as op-mem-layer]
             [frontend.worker.rtc.ws :as ws]
             [frontend.handler.user :as user]
@@ -13,18 +10,22 @@
             [frontend.ui :as ui]
             [frontend.util :as util]
             [rum.core :as rum]
-            [frontend.persist-db.browser :as db-browser]))
+            [frontend.persist-db.browser :as db-browser]
+            [promesa.core :as p]
+            [cljs-bean.core :as bean]))
 
 (defonce debug-state (atom nil))
 
 (defn- stop
   []
-  (async/close! @(:*stop-rtc-loop-chan @debug-state))
+  (let [^object worker @db-browser/*worker]
+    (.rtc-stop worker))
   (reset! debug-state nil))
 
 (defn- push-pending-ops
   []
-  (async/put! (:force-push-client-ops-chan @debug-state) true))
+  (let [^object worker @db-browser/*worker]
+    (.rtc-push-pending-ops worker)))
 
 (rum/defcs ^:large-vars/cleanup-todo rtc-debug-ui <
   rum/reactive
@@ -59,12 +60,10 @@
       (ui/button "graph-list"
                  :icon "refresh"
                  :on-click (fn [_]
-                             (go
-                               (let [s (or s (<! (rtc-core/<init-state (state/get-auth-id-token))))
-                                     graph-list (with-sub-data-from-ws s
-                                                  (<! (ws/<send! s {:req-id (get-req-id)
-                                                                    :action "list-graphs"}))
-                                                  (:graphs (<! (get-result-ch))))]
+                             (let [token (state/get-auth-id-token)
+                                   ^object worker @db-browser/*worker]
+                               (p/let [result (.rtc-get-graphs worker token)
+                                       graph-list (bean/->clj result)]
                                  (reset! (::remote-graphs state) (map :graph-uuid graph-list))
                                  (reset! debug-state s)))))]
 
@@ -100,9 +99,9 @@
                                    ")")
                               {:on-click
                                (fn []
-                                 (go
-                                   (<! (rtc-core/<toggle-auto-push-client-ops s))
-                                   (reset! (::auto-push-updates? state) @(:*auto-push-client-ops? s))))})]
+                                 (let [^object worker @db-browser/*worker]
+                                   (p/let [result (.rtc-toggle-sync worker (state/get-current-repo))]
+                                     (reset! (::auto-push-updates? state) result))))})]
         [:div (ui/button "stop" {:on-click (fn [] (stop))})]])
      (when (some? s)
        [:hr]

+ 20 - 4
src/main/frontend/db_worker.cljs

@@ -392,8 +392,11 @@
 
   (rtc-toggle-sync
    [this repo]
-   (rtc-core/<toggle-sync)
-   nil)
+   (let [d (p/deferred)]
+     (async/go
+       (let [result (<! (rtc-core/<toggle-sync))]
+         (p/resolve! d result)))
+     d))
 
   (rtc-grant-graph-access
    [this graph-uuid target-user-uuids target-user-emails]
@@ -410,8 +413,8 @@
      (async/go
        (try
          (let [state (<! (rtc-core/<init-state token))]
-          (<! (rtc-updown/<upload-graph state repo conn))
-          (rtc-db-listener/listen-db-to-generate-ops repo conn))
+           (<! (rtc-updown/<upload-graph state repo conn))
+           (rtc-db-listener/listen-db-to-generate-ops repo conn))
          (worker-util/post-message :notification
                                    (pr-str
                                     [[:div
@@ -444,6 +447,19 @@
            (prn ::download-graph-failed e)))))
    nil)
 
+  (rtc-push-pending-ops
+   [_this]
+   (async/put! (:force-push-client-ops-chan @rtc-core/*state) true)
+   nil)
+
+  (rtc-get-graphs
+   [_this token]
+   (rtc-core/<get-graphs token))
+
+  (rtc-get-block-content-versions
+   [_this block-id]
+   (rtc-core/<get-block-content-versions @rtc-core/*state block-id))
+
   (dangerousRemoveAllDbs
    [this repo]
    (p/let [dbs (.listDB this)]

+ 32 - 13
src/main/frontend/worker/rtc/core.cljs

@@ -24,7 +24,9 @@
             [frontend.worker.rtc.const :as rtc-const]
             [frontend.worker.rtc.op-mem-layer :as op-mem-layer]
             [frontend.worker.rtc.ws :as ws]
-            [frontend.state :as state]))
+            [frontend.state :as state]
+            [promesa.core :as p]
+            [cljs-bean.core :as bean]))
 
 
 ;;                     +-------------+
@@ -808,21 +810,26 @@
   [state]
   (go
     (swap! (:*auto-push-client-ops? state) not)
-    (>! (:toggle-auto-push-client-ops-chan state) true)))
+    (>! (:toggle-auto-push-client-ops-chan state) true)
+    @(:*auto-push-client-ops? state)))
 
 (defn <get-block-content-versions
   [state block-uuid]
-  (go
-    (when (some-> state :*graph-uuid deref)
-      (with-sub-data-from-ws state
-        (<! (ws/<send! state {:req-id (get-req-id)
-                              :action "query-block-content-versions"
-                              :block-uuids [block-uuid]
-                              :graph-uuid @(:*graph-uuid state)}))
-        (let [{:keys [ex-message ex-data versions]} (<! (get-result-ch))]
-          (if ex-message
-            (prn ::<get-block-content-versions :ex-message ex-message :ex-data ex-data)
-            versions))))))
+  (let [d (p/deferred)]
+    (go
+      (when (some-> state :*graph-uuid deref)
+        (with-sub-data-from-ws state
+          (<! (ws/<send! state {:req-id (get-req-id)
+                                :action "query-block-content-versions"
+                                :block-uuids [block-uuid]
+                                :graph-uuid @(:*graph-uuid state)}))
+          (let [{:keys [ex-message ex-data versions]} (<! (get-result-ch))]
+            (if ex-message
+              (do
+                (prn ::<get-block-content-versions :ex-message ex-message :ex-data ex-data)
+                (p/resolve! nil))
+              (p/resolve! (bean/->js versions)))))))
+    d))
 
 
 (defn init-state
@@ -877,3 +884,15 @@
   []
   (when-let [state @*state]
     (<toggle-auto-push-client-ops state)))
+
+(defn <get-graphs
+  [token]
+  (let [d (p/deferred)]
+    (go
+     (let [state (or @*state (<! (<init-state token)))
+           graph-list (with-sub-data-from-ws state
+                        (<! (ws/<send! state {:req-id (get-req-id)
+                                              :action "list-graphs"}))
+                        (:graphs (<! (get-result-ch))))]
+       (p/resolve! (bean/->js graph-list))))
+    d))