Keep previous state to fix the "session expired" banner if it expires
diff --git a/ui-modules/utils/server-status/server-status.js b/ui-modules/utils/server-status/server-status.js
index 2d97b17..242cf66 100644
--- a/ui-modules/utils/server-status/server-status.js
+++ b/ui-modules/utils/server-status/server-status.js
@@ -44,6 +44,7 @@
let intervalId = $interval(checkStatus, REFRESH_INTERVAL);
$scope.$on('$destroy', () => ($interval.cancel(intervalId)));
let modalInstance = null;
+ var previousState = null;
function checkStatus() {
cookie = $cookies.getObject(COOKIE_KEY) || DEFAULT_COOKIE;
@@ -55,7 +56,6 @@
let state = BrServerStatusModalController.STATES.OK;
let stateData = null;
if (error) {
- console.log(error);
stateData = response.data;
if (stateData && stateData.SESSION_AGE_EXCEEDED) {
@@ -67,9 +67,17 @@
}else if(response.status === 401 || response.status === 403 ) {
state = BrServerStatusModalController.STATES.USER_NOT_AUTHORIZED;
}else {
- state = BrServerStatusModalController.STATES.OTHER_ERROR;
+ 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
+ console.log("Server responded \"" + stateData + "\" after previous problem \"" + previousState + "\"");
+ // no update
+ state = previousState;
+ }
}
-
stateData = response;
} else {
stateData = response.data;
@@ -83,6 +91,7 @@
state = BrServerStatusModalController.STATES.UNHEALTHY;
}
}
+ 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);