function updateState()

in ui-modules/utils/server-status/server-status.js [58:110]


        function updateState(response, error = false) {
            let state = BrServerStatusModalController.STATES.OK;
            let stateData = null;
            if (error) {
                stateData = response.data;

                if (stateData && stateData.SESSION_AGE_EXCEEDED) {
                    state = BrServerStatusModalController.STATES.SESSION_AGE_EXCEEDED;
                } else if (stateData && stateData.SESSION_INVALIDATED) {
                    state = BrServerStatusModalController.STATES.SESSION_INVALIDATED;
                }else if(response.status === 404) {
                    state = BrServerStatusModalController.STATES.NO_CONNECTION;
                }else if(response.status === 401 || response.status === 403 ) {
                    if( response.headers(LOGIN_PAGE_HEADER)) {
                        $window.location.href = '/' + response.headers(LOGIN_PAGE_HEADER);
                    }
                    state = BrServerStatusModalController.STATES.USER_NOT_AUTHORIZED;
                }else {
                    if (previousState === null || previousState == BrServerStatusModalController.STATES.OK){
                        state = BrServerStatusModalController.STATES.OTHER_ERROR;
                    } else {
                        // we're now getting a new server error, possibly because the old error has expired
                        // but changing the message for the user would be confusing so don't do that!
                        // eg we get a 405 after a 307 (which the browser handles automatically) if redirected to Google for login
                        $log.info("Server responded \"" + stateData + "\" after previous problem \"" + previousState + "\"");
                        // no update
                        state = previousState;
                    }
                }
                stateData = response;
            } else {
                stateData = response.data;
                if (stateData.shuttingDown) {
                    state = BrServerStatusModalController.STATES.STOPPING;
                } else if (!stateData.up) {
                    state = BrServerStatusModalController.STATES.STARTING;
                } else if (stateData.healthy && stateData.ha.planeId && stateData.ha.masterId !== stateData.ha.ownId) {
                    state = BrServerStatusModalController.STATES.NOT_HA_MASTER;
                } else if (!stateData.healthy) {
                    state = BrServerStatusModalController.STATES.UNHEALTHY;
                }

                let sensitiveFields = stateData['brooklyn.security.sensitive.fields'];
                if (sensitiveFields) {
                    setSensitiveFields(sensitiveFields.tokens, sensitiveFields['plaintext.blocked']);
                }
            }
            previousState = state;
            $rootScope.$broadcast('br-server-state-update', {state: state, stateData: stateData});
            if (state !== BrServerStatusModalController.STATES.OK && !cookie.dismissed && cookie.dismissedSate !== state) {
                openModal(state, stateData);
            }
        }