Răsfoiți Sursa

enhance(rtc): try start when js/document is visible

rcmerci 7 luni în urmă
părinte
comite
a4158cad81

+ 9 - 0
src/main/frontend/flows.cljs

@@ -32,3 +32,12 @@
   (m/eduction
    (dedupe)
    (m/watch *current-login-user)))
+
+(def document-visibility-state-flow
+  (->> (m/observe
+        (fn ctor [emit!]
+          (let [callback-fn (fn [] (emit! js/document.visibilityState))]
+            (.addEventListener ^js js/document "visibilitychange" callback-fn)
+            (callback-fn)
+            (fn dtor [] (.removeEventListener ^js js/document "visibilitychange" callback-fn)))))
+       (m/eduction (dedupe))))

+ 4 - 1
src/main/frontend/handler/db_based/rtc_flows.cljs

@@ -99,7 +99,10 @@ conditions:
      flows/current-repo-flow)
     (m/eduction
      (keep (fn [repo] (when repo [:trigger-rtc repo])))
-     (m/watch *rtc-start-trigger))]
+     (m/watch *rtc-start-trigger))
+    (m/eduction
+     (keep (fn [visibility] (when (= "visible" visibility) [:document-visible])))
+     flows/document-visibility-state-flow)]
    (apply c.m/mix)
    (m/eduction (filter (fn [_] (some? (state/get-auth-id-token)))))
    (c.m/debounce 200)))