diff --git a/src/main/frontend/flows.cljs b/src/main/frontend/flows.cljs index c1df2cd6a3..d3db49f7bf 100644 --- a/src/main/frontend/flows.cljs +++ b/src/main/frontend/flows.cljs @@ -21,7 +21,7 @@ (def ^:private current-login-user-validator (ma/validator current-login-user-schema)) (def *current-login-user (atom nil :validator current-login-user-validator)) -(def *network-online? (atom nil)) +(def *network-online? (atom true)) ;; Public Flows ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/src/main/frontend/handler.cljs b/src/main/frontend/handler.cljs index 71b8816f27..e74fb7fa2d 100644 --- a/src/main/frontend/handler.cljs +++ b/src/main/frontend/handler.cljs @@ -149,7 +149,6 @@ (render) (i18n/start) (instrument/init) - (state/set-online! js/navigator.onLine) (-> (util/indexeddb-check?) (p/catch (fn [_e] diff --git a/src/main/frontend/handler/db_based/rtc_flows.cljs b/src/main/frontend/handler/db_based/rtc_flows.cljs index 457e6de836..a3e067eab2 100644 --- a/src/main/frontend/handler/db_based/rtc_flows.cljs +++ b/src/main/frontend/handler/db_based/rtc_flows.cljs @@ -47,39 +47,28 @@ (dedupe) rtc-state-flow))) -(def ^:private network-online-change-flow - (m/stream - (m/relieve - (m/observe - (fn ctor [emit!] - (let [origin-callback js/window.ononline] - (set! js/window.ononline emit!) - (emit! nil) - (fn dtor [] - (set! js/window.ononline origin-callback)))))))) - (def rtc-try-restart-flow "emit an event when it's time to restart rtc loop. conditions: - user logged in - no rtc loop running now - last rtc stop-reason is websocket message timeout -- current js/navigator.onLine=true +- online - throttle 5000ms" (->> (m/latest - (fn [rtc-state _ login-user] - (assoc rtc-state :login-user login-user)) + (fn [rtc-state online? login-user] + (assoc rtc-state :login-user login-user :online? online?)) rtc-state-flow - (c.m/continue-flow network-online-change-flow) + flows/network-online-event-flow flows/current-login-user-flow) (m/eduction (keep (fn [m] - (let [{:keys [rtc-lock last-stop-exception-ex-data graph-uuid login-user]} m] - (when (and (some? (:email login-user)) + (let [{:keys [rtc-lock last-stop-exception-ex-data graph-uuid login-user online?]} m] + (when (and online? + (some? (:email login-user)) (some? graph-uuid) (not rtc-lock) ; no rtc loop now - (= :rtc.exception/ws-timeout (:type last-stop-exception-ex-data)) - (true? js/navigator.onLine)) + (= :rtc.exception/ws-timeout (:type last-stop-exception-ex-data))) {:graph-uuid graph-uuid :t (common-util/time-ms)}))))) (c.m/throttle 5000)))