habitica-self-host/common/script/public/config.js

50 lines
2 KiB
JavaScript
Raw Normal View History

'use strict';
angular.module('habitrpg').config(['$httpProvider', function($httpProvider){
$httpProvider.interceptors.push(['$q', '$rootScope', function($q, $rootScope){
return {
response: function(response) {
return response;
},
responseError: function(response) {
2015-01-17 01:16:56 +00:00
var mobileApp = !!window.env.appVersion;
// Offline
if (response.status == 0 ||
// don't know why we're getting 404 here, should be 0
(response.status == 404 && _.isEmpty(response.data))) {
2015-01-17 01:16:56 +00:00
if (!mobileApp) // skip mobile, queue actions
$rootScope.$broadcast('responseText', window.env.t('serverUnreach'));
// Needs refresh
} else if (response.needRefresh) {
2015-01-17 01:16:56 +00:00
if (!mobileApp) // skip mobile for now
$rootScope.$broadcast('responseError', "The site has been updated and the page needs to refresh. The last action has not been recorded, please refresh and try again.");
} else if (response.data.code && response.data.code === 'ACCOUNT_SUSPENDED') {
confirm(response.data.err);
localStorage.clear();
2015-01-17 01:16:56 +00:00
window.location.href = mobileApp ? '/app/login' : '/logout'; //location.reload()
2015-01-17 01:16:56 +00:00
// 400 range?
} else if (response.status < 500) {
$rootScope.$broadcast('responseText', response.data.err || response.data);
// Need to reject the prompse so the error is handled correctly
2015-01-17 01:16:56 +00:00
if (response.status === 401)
return $q.reject(response);
2015-01-17 01:16:56 +00:00
// Error
} else {
var error = window.env.t('requestError') + '<br><br>"' +
window.env.t('error') + ' ' + (response.data.err || response.data || 'something went wrong') +
'" <br><br>' + window.env.t('seeConsole');
2015-01-17 01:16:56 +00:00
if (mobileApp) error = 'Error contacting the server. Please try again in a few minutes.';
$rootScope.$broadcast('responseError', error);
console.error(response);
}
return $q.reject(response);
}
};
}]);
}]);