15803: Display loading screen during "get user info" and "self activate"
authorPeter Amstutz <pamstutz@veritasgenetics.com>
Thu, 14 Nov 2019 21:53:45 +0000 (16:53 -0500)
committerPeter Amstutz <pamstutz@veritasgenetics.com>
Thu, 14 Nov 2019 21:54:07 +0000 (16:54 -0500)
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz@veritasgenetics.com>

src/store/auth/auth-action.ts
src/store/auth/auth-middleware.ts

index 62f4a0fa758ceca650a74b6810bfb438cb0954c6..41245751ebb178b5d53e9bfd43753fc1969aa230 100644 (file)
@@ -13,6 +13,8 @@ import { Config } from '~/common/config';
 import { matchTokenRoute, matchFedTokenRoute } from '~/routes/routes';
 import { createServices, setAuthorizationHeader } from "~/services/services";
 import { cancelLinking } from '~/store/link-account-panel/link-account-panel-actions';
+import { progressIndicatorActions } from "~/store/progress-indicator/progress-indicator-actions";
+import { WORKBENCH_LOADING_SCREEN } from '~/store/workbench/workbench-actions';
 
 export const authActions = unionize({
     LOGIN: {},
@@ -56,7 +58,10 @@ const init = (config: Config) => (dispatch: Dispatch, getState: () => RootState,
     dispatch(authActions.SET_HOME_CLUSTER(config.loginCluster || homeCluster || config.uuidPrefix));
 
     if (token && token !== "undefined") {
-        dispatch<any>(saveApiToken(token));
+        dispatch(progressIndicatorActions.START_WORKING(WORKBENCH_LOADING_SCREEN));
+        dispatch<any>(saveApiToken(token)).finally(() => {
+            dispatch(progressIndicatorActions.STOP_WORKING(WORKBENCH_LOADING_SCREEN));
+        });
     }
 };
 
index 59ce18a2695a21379e823daf49100a93fb56e2fa..817ddd2e21a6669ab1589649554ad65b0b8dd2e4 100644 (file)
@@ -8,6 +8,8 @@ import { ServiceRepository, setAuthorizationHeader, removeAuthorizationHeader }
 import { initSessions } from "~/store/auth/auth-action-session";
 import { User } from "~/models/user";
 import { RootState } from '~/store/store';
+import { progressIndicatorActions } from "~/store/progress-indicator/progress-indicator-actions";
+import { WORKBENCH_LOADING_SCREEN } from '~/store/workbench/workbench-actions';
 
 export const authMiddleware = (services: ServiceRepository): Middleware => store => next => action => {
     authActions.match(action, {
@@ -25,8 +27,12 @@ export const authMiddleware = (services: ServiceRepository): Middleware => store
 
             store.dispatch<any>(initSessions(services.authService, state.auth.remoteHostsConfig[state.auth.localCluster], user));
             if (!user.isActive) {
+                store.dispatch(progressIndicatorActions.START_WORKING(WORKBENCH_LOADING_SCREEN));
                 services.userService.activate(user.uuid).then((user: User) => {
-                    store.getState().dispatch(authActions.INIT({ user, token }));
+                    store.dispatch(authActions.INIT({ user, token }));
+                    store.dispatch(progressIndicatorActions.STOP_WORKING(WORKBENCH_LOADING_SCREEN));
+                }).catch(() => {
+                    store.dispatch(progressIndicatorActions.STOP_WORKING(WORKBENCH_LOADING_SCREEN));
                 });
             }
         },