From ce4f2c3a8f1b7e191e737ec82a713b57aa7f3879 Mon Sep 17 00:00:00 2001 From: rcmerci Date: Sat, 22 Feb 2025 22:59:12 +0800 Subject: [PATCH] enhance(rtc): add :auto-start-rtc-if-possible background-task --- src/main/frontend/common/missionary.cljs | 3 +++ src/main/frontend/components/repo.cljs | 7 ++--- src/main/frontend/handler/db_based/rtc.cljs | 8 +++--- .../db_based/rtc_background_tasks.cljs | 24 ++++++++--------- .../frontend/handler/db_based/rtc_flows.cljs | 27 +++++++++++++++++++ src/main/frontend/handler/events.cljs | 10 ++++--- 6 files changed, 57 insertions(+), 22 deletions(-) diff --git a/src/main/frontend/common/missionary.cljs b/src/main/frontend/common/missionary.cljs index ef43929355..900612cabc 100644 --- a/src/main/frontend/common/missionary.cljs +++ b/src/main/frontend/common/missionary.cljs @@ -151,5 +151,8 @@ (fn? chan-or-promise-or-task) chan-or-promise-or-task + (nil? chan-or-promise-or-task) + (m/sp) + :else (throw (ex-info "Unsupported arg" {:type (type chan-or-promise-or-task)})))) diff --git a/src/main/frontend/components/repo.cljs b/src/main/frontend/components/repo.cljs index 676c33e62d..825bdf3b8e 100644 --- a/src/main/frontend/components/repo.cljs +++ b/src/main/frontend/components/repo.cljs @@ -6,6 +6,7 @@ [frontend.context.i18n :refer [t]] [frontend.db :as db] [frontend.handler.db-based.rtc :as rtc-handler] + [frontend.handler.db-based.rtc-flows :as rtc-flows] [frontend.handler.file-based.nfs :as nfs-handler] [frontend.handler.file-sync :as file-sync] [frontend.handler.graph :as graph] @@ -20,6 +21,7 @@ [frontend.util.fs :as fs-util] [frontend.util.text :as text-util] [goog.object :as gobj] + [lambdaisland.glogi :as log] [logseq.shui.ui :as shui] [medley.core :as medley] [promesa.core :as p] @@ -482,12 +484,11 @@ (state/set-state! :rtc/uploading? true) (rtc-handler/ ex-data* diff --git a/src/main/frontend/handler/db_based/rtc_background_tasks.cljs b/src/main/frontend/handler/db_based/rtc_background_tasks.cljs index e91f2aba2f..a9785413e1 100644 --- a/src/main/frontend/handler/db_based/rtc_background_tasks.cljs +++ b/src/main/frontend/handler/db_based/rtc_background_tasks.cljs @@ -4,7 +4,6 @@ [frontend.common.missionary :as c.m] [frontend.config :as config] [frontend.db :as db] - [frontend.flows :as flows] [frontend.handler.db-based.rtc :as rtc-handler] [frontend.handler.db-based.rtc-flows :as rtc-flows] [frontend.handler.notification :as notification] @@ -22,7 +21,7 @@ (run-background-task-when-not-publishing ;; try to restart rtc-loop when possible, ;; triggered by `rtc-flows/rtc-try-restart-flow` - ::restart-rtc-task + ::restart-rtc-to-reconnect (m/reduce (constantly nil) (m/ap @@ -51,21 +50,22 @@ "The server has a graph with a higher schema version, the client may need to upgrade." :warning)))))) -(def ^:private logout-or-graph-switch-flow - (c.m/mix - (m/eduction - (filter #(= :logout %)) - flows/current-login-user-flow) - (m/eduction - (keep (fn [x] (when x :graph-switch))) - flows/current-repo-flow))) - (run-background-task-when-not-publishing ;; stop rtc when [graph-switch user-logout] ::stop-rtc-if-needed (m/reduce (constantly nil) (m/ap - (let [logout-or-graph-switch (m/?> logout-or-graph-switch-flow)] + (let [logout-or-graph-switch (m/?> rtc-flows/logout-or-graph-switch-flow)] (log/info :try-to-stop-rtc-if-needed logout-or-graph-switch) (c.m/ rtc-flows/trigger-start-rtc-flow)] + (log/info :try-to-start-rtc (first start-reason)) + (c.m/