Преглед изворни кода

fix(rtc): update local-tx if not exists yet when register-graph-updates

rcmerci пре 1 година
родитељ
комит
fda893fca7

+ 1 - 0
src/main/frontend/worker/db_listener.cljs

@@ -86,6 +86,7 @@ generate undo ops.")
                    (select-keys (methods listen-db-changes) handler-keys)
                    (methods listen-db-changes))]
     (d/unlisten! conn ::listen-db-changes!)
+    (prn :listen-db-changes! (keys handlers))
     (d/listen! conn ::listen-db-changes!
                (fn [{:keys [tx-data _db-before _db-after tx-meta] :as tx-report}]
                  (let [tx-meta (merge (batch-tx/get-batch-opts) tx-meta)

+ 8 - 5
src/main/frontend/worker/rtc/client.cljs

@@ -27,11 +27,14 @@
       (handle-remote-ex (m/? (ws/send&recv ws message))))))
 
 (defn- register-graph-updates
-  [get-ws-create-task graph-uuid]
+  [get-ws-create-task graph-uuid repo]
   (m/sp
     (try
-      (m/? (send&recv get-ws-create-task {:action "register-graph-updates"
-                                          :graph-uuid graph-uuid}))
+      (let [{:keys [t]}
+            (m/? (send&recv get-ws-create-task {:action "register-graph-updates"
+                                                :graph-uuid graph-uuid}))]
+        (when-not (op-mem-layer/get-local-tx repo)
+          (op-mem-layer/update-local-tx! repo t)))
       (catch :default e
         (if (= :rtc.exception/remote-graph-not-ready (:type (ex-data e)))
           (throw (ex-info "remote graph is still creating" {:missionary/retry true} e))
@@ -41,7 +44,7 @@
   "Return a task: get or create a mws(missionary wrapped websocket).
   see also `ws/get-mws-create`.
   But ensure `register-graph-updates` has been sent"
-  [get-ws-create-task graph-uuid]
+  [get-ws-create-task graph-uuid repo]
   (assert (some? graph-uuid))
   (let [*sent (atom {}) ;; ws->bool
         ]
@@ -52,7 +55,7 @@
         (when (not (@*sent ws))
           (m/? (c.m/backoff
                 (take 5 (drop 2 c.m/delays))     ;retry 5 times if remote-graph is creating (4000 8000 16000 32000 64000)
-                (register-graph-updates get-ws-create-task graph-uuid)))
+                (register-graph-updates get-ws-create-task graph-uuid repo)))
           (swap! *sent assoc ws true))
         ws))))
 

+ 1 - 1
src/main/frontend/worker/rtc/core.cljs

@@ -140,7 +140,7 @@
         add-log-fn          #(reset! *log [(js/Date.) %])
         {:keys [*current-ws get-ws-create-task]}
         (new-task--get-ws-create--memoized ws-url)
-        get-ws-create-task  (r.client/ensure-register-graph-updates get-ws-create-task graph-uuid)
+        get-ws-create-task  (r.client/ensure-register-graph-updates get-ws-create-task graph-uuid repo)
         mixed-flow          (create-mixed-flow repo get-ws-create-task *auto-push?)]
     (assert (some? *current-ws))
     {:rtc-log-flow    (m/buffer 100 (m/watch *log))