import { getCookie } from './cookies';
import { translate } from './l10n';
+/** Current application version. Can be changed if a newer version is deployed. */
+let currentApplicationVersion: string | undefined;
+
export function getCSRFTokenName(): string {
return 'X-XSRF-TOKEN';
}
return request;
}
+function checkApplicationVersion(response: Response): boolean {
+ const version = response.headers.get('Sonar-Version');
+ if (version) {
+ if (currentApplicationVersion && currentApplicationVersion !== version) {
+ window.location.reload();
+ return false;
+ } else {
+ currentApplicationVersion = version;
+ }
+ }
+ return true;
+}
+
/**
* Check that response status is ok
*/
export function checkStatus(response: Response): Promise<Response> {
return new Promise((resolve, reject) => {
- if (response.status === 401) {
- // workaround cyclic dependencies
- const requireAuthentication = require('../app/utils/handleRequiredAuthentication').default;
- requireAuthentication();
- reject();
- } else if (response.status >= 200 && response.status < 300) {
- resolve(response);
- } else {
- reject({ response });
+ if (checkApplicationVersion(response)) {
+ if (response.status === 401) {
+ // workaround cyclic dependencies
+ const requireAuthentication = require('../app/utils/handleRequiredAuthentication').default;
+ requireAuthentication();
+ reject();
+ } else if (response.status >= 200 && response.status < 300) {
+ resolve(response);
+ } else {
+ reject({ response });
+ }
}
});
}