Browse Source

refactor: step 1 file-sync/sync-manager

Tienson Qin 3 years ago
parent
commit
308a4aeb47
2 changed files with 18 additions and 8 deletions
  1. 4 1
      src/main/frontend/fs/sync.cljs
  2. 14 7
      src/main/frontend/state.cljs

+ 4 - 1
src/main/frontend/fs/sync.cljs

@@ -2865,6 +2865,9 @@
   (go
     (when-let [sm ^SyncManager (state/get-file-sync-manager)]
       (println "[SyncManager" (:graph-uuid sm) "]" "stopping")
+
+      (state/clear-file-sync-state! (:graph-uuid sm))
+
       (<! (-stop! sm))
       (swap! state/state assoc :file-sync/sync-state {})
       (println "[SyncManager" (:graph-uuid sm) "]" "stopped")
@@ -2955,7 +2958,7 @@
                       (clear-graphs-txid! repo)
                       (do
                         (state/set-file-sync-state repo @*sync-state)
-                        (state/set-file-sync-manager sm)
+                        (state/set-file-sync-manager graph-uuid sm)
 
                         ;; update global state when *sync-state changes
                         (add-watch *sync-state ::update-global-state

+ 14 - 7
src/main/frontend/state.cljs

@@ -235,9 +235,11 @@
      :file-sync/jstour-inst                   nil
      :file-sync/onboarding-state            (or (storage/get :file-sync/onboarding-state)
                                                 {:welcome false})
-
      :file-sync/remote-graphs               {:loading false :graphs nil}
-     :file-sync/sync-manager                nil
+
+     ;; graph-uuid -> {}
+     :file-sync/graph-state                 {}
+
      :file-sync/sync-state                  nil
      :file-sync/sync-uploading-files        nil
      :file-sync/sync-downloading-files      nil
@@ -1761,15 +1763,20 @@ Similar to re-frame subscriptions"
 (defn get-auth-refresh-token []
   (:auth/refresh-token @state))
 
-(defn set-file-sync-manager [v]
-  (set-state! :file-sync/sync-manager v))
+(defn set-file-sync-manager [graph-uuid v]
+  (when (and graph-uuid v)
+    (set-state! [:file-sync/graph-state graph-uuid :file-sync/sync-manager] v)))
+
+(defn get-file-sync-manager [graph-uuid]
+  (get-in @state [:file-sync/graph-state graph-uuid :file-sync/sync-manager]))
+
+(defn clear-file-sync-state! [graph-uuid]
+  (set-state! [:file-sync/graph-state graph-uuid] nil))
+
 (defn set-file-sync-state [graph v]
   (when v (s/assert :frontend.fs.sync/sync-state v))
   (set-state! [:file-sync/sync-state graph] v))
 
-(defn get-file-sync-manager []
-  (:file-sync/sync-manager @state))
-
 (defn get-file-sync-state
   ([]
    (get-file-sync-state (get-current-repo)))