2015-01-16 23:47:57 +00:00
'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 ;
2015-01-16 23:47:57 +00:00
// 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
2015-01-16 23:47:57 +00:00
} 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." ) ;
2015-01-16 23:47:57 +00:00
} 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-16 23:47:57 +00:00
2015-01-17 01:16:56 +00:00
// 400 range?
2015-01-16 23:47:57 +00:00
} 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 )
2015-01-16 23:47:57 +00:00
return $q . reject ( response ) ;
2015-01-17 01:16:56 +00:00
// Error
2015-01-16 23:47:57 +00:00
} else {
var error = '<strong>Please reload</strong>, ' +
'"' + window . env . t ( 'error' ) + ' ' + ( response . data . err || response . data || 'something went wrong' ) + '" ' +
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.' ;
2015-01-16 23:47:57 +00:00
$rootScope . $broadcast ( 'responseError' , error ) ;
console . error ( response ) ;
}
return $q . reject ( response ) ;
}
} ;
} ] ) ;
} ] ) ;