Browse Source

enhance: add loading indicator when login

Tienson Qin 3 years ago
parent
commit
3320c28c98

+ 9 - 3
src/main/frontend/components/header.cljs

@@ -33,11 +33,17 @@
 
 (rum/defc login < rum/reactive
   []
-  (let [_ (state/sub :auth/id-token)]
+  (let [_ (state/sub :auth/id-token)
+        loading? (state/sub [:ui/loading? :login])]
     (when-not (or config/publishing?
                   (user-handler/logged-in?))
-      [:a.button.text-sm.font-medium.block {:on-click #(js/window.open config/LOGIN-URL)}
-         [:span (t :login)]])))
+      [:a.button.text-sm.font-medium.block {:on-click
+                                            #(do
+                                               (state/set-state! [:ui/loading? :login] true)
+                                               (js/window.open config/LOGIN-URL))}
+       [:span (t :login)]
+       (when loading?
+         [:span.ml-2 (ui/loading "")])])))
 
 (rum/defc left-menu-button < rum/reactive
   [{:keys [on-click]}]

+ 1 - 0
src/main/frontend/handler/events.cljs

@@ -60,6 +60,7 @@
          (sync/sync-stop)))
 
 (defmethod handle :user/login [[_]]
+  (state/set-state! [:ui/loading? :login] false)
   (async/go
     (async/<! (file-sync-handler/load-session-graphs))
     (p/let [repos (repo-handler/refresh-repos!)]

+ 2 - 1
src/main/frontend/state.cljs

@@ -230,7 +230,8 @@
      :file-sync/sync-downloading-files      nil
 
      :encryption/graph-parsing?             false
-     })))
+
+     :ui/loading?                           {}})))
 
 ;; block uuid -> {content(String) -> ast}
 (def blocks-ast-cache (atom {}))