mirror of
https://github.com/logseq/logseq.git
synced 2026-05-24 12:44:22 +00:00
fix: don't run sync for local graphs that's detached from server
This commit is contained in:
@@ -421,7 +421,8 @@
|
||||
(when (and current-repo
|
||||
(ldb/get-graph-rtc-uuid (db/get-db))
|
||||
(user-handler/logged-in?)
|
||||
(user-handler/rtc-group?))
|
||||
(user-handler/rtc-group?)
|
||||
(some #(= current-repo (:url %)) (state/get-rtc-graphs)))
|
||||
[:<>
|
||||
(recent-slider)
|
||||
(rum/with-key (rtc-collaborators)
|
||||
|
||||
@@ -150,13 +150,12 @@
|
||||
[:small "⚠️ Notice that we can't recover this graph after being deleted. Make sure you have backups before deleting it."]]])
|
||||
(p/then
|
||||
(fn []
|
||||
(let [<delete-graph rtc-handler/<rtc-delete-graph!]
|
||||
(state/set-state! :rtc/loading-graphs? true)
|
||||
(when (= (state/get-current-repo) repo)
|
||||
(state/<invoke-db-worker :thread-api/rtc-stop))
|
||||
(p/do! (<delete-graph GraphUUID GraphSchemaVersion)
|
||||
(state/set-state! :rtc/loading-graphs? false)
|
||||
(rtc-handler/<get-remote-graphs))))))))}
|
||||
(state/set-state! :rtc/loading-graphs? true)
|
||||
(when (= (state/get-current-repo) repo)
|
||||
(state/<invoke-db-worker :thread-api/rtc-stop))
|
||||
(p/do! (rtc-handler/<rtc-delete-graph! GraphUUID GraphSchemaVersion)
|
||||
(state/set-state! :rtc/loading-graphs? false)
|
||||
(rtc-handler/<get-remote-graphs)))))))}
|
||||
"Delete from server"))
|
||||
|
||||
(when (and remote? (not manager?))
|
||||
|
||||
@@ -147,10 +147,19 @@
|
||||
coerced))
|
||||
body))
|
||||
|
||||
(defn- graph-in-remote-list?
|
||||
[repo]
|
||||
(some #(= repo (:url %)) (state/get-rtc-graphs)))
|
||||
|
||||
(defn <rtc-start!
|
||||
[repo & {:keys [_stop-before-start?] :as _opts}]
|
||||
(log/info :db-sync/start {:repo repo})
|
||||
(state/<invoke-db-worker :thread-api/db-sync-start repo))
|
||||
(if (graph-in-remote-list? repo)
|
||||
(do
|
||||
(log/info :db-sync/start {:repo repo})
|
||||
(state/<invoke-db-worker :thread-api/db-sync-start repo))
|
||||
(do
|
||||
(log/info :db-sync/skip-start {:repo repo :reason :graph-not-in-remote-list})
|
||||
(p/resolved nil))))
|
||||
|
||||
(defn <rtc-stop!
|
||||
[]
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
(:require [cljs.test :refer [deftest is async]]
|
||||
[frontend.handler.db-based.sync :as db-sync]
|
||||
[frontend.handler.user :as user-handler]
|
||||
[frontend.state :as state]
|
||||
[promesa.core :as p]))
|
||||
|
||||
(deftest remove-member-request-test
|
||||
@@ -51,3 +52,33 @@
|
||||
(p/catch (fn [e]
|
||||
(is (= :db-sync/invalid-member (:type (ex-data e))))
|
||||
(done))))))
|
||||
|
||||
(deftest rtc-start-skips-when-graph-missing-from-remote-list-test
|
||||
(async done
|
||||
(let [called (atom nil)]
|
||||
(-> (p/with-redefs [state/get-rtc-graphs (fn [] [{:url "repo-other"}])
|
||||
state/<invoke-db-worker (fn [& args]
|
||||
(reset! called args)
|
||||
(p/resolved :ok))]
|
||||
(db-sync/<rtc-start! "repo-current"))
|
||||
(p/then (fn [_]
|
||||
(is (nil? @called))
|
||||
(done)))
|
||||
(p/catch (fn [e]
|
||||
(is false (str e))
|
||||
(done)))))))
|
||||
|
||||
(deftest rtc-start-invokes-worker-when-graph-in-remote-list-test
|
||||
(async done
|
||||
(let [called (atom nil)]
|
||||
(-> (p/with-redefs [state/get-rtc-graphs (fn [] [{:url "repo-current"}])
|
||||
state/<invoke-db-worker (fn [& args]
|
||||
(reset! called args)
|
||||
(p/resolved :ok))]
|
||||
(db-sync/<rtc-start! "repo-current"))
|
||||
(p/then (fn [_]
|
||||
(is (= [:thread-api/db-sync-start "repo-current"] @called))
|
||||
(done)))
|
||||
(p/catch (fn [e]
|
||||
(is false (str e))
|
||||
(done)))))))
|
||||
|
||||
Reference in New Issue
Block a user