app.js: intercept errors, show them on page, show loading screen in interceptor

This commit is contained in:
Tyler Renelle 2013-09-01 11:34:00 -04:00
parent 633d6fdb52
commit b22ccc0a23
3 changed files with 23 additions and 2 deletions

View file

@ -23,4 +23,24 @@ window.habitrpg = angular.module('habitrpg',
$httpProvider.defaults.headers.common['x-api-user'] = settings.auth.apiId; $httpProvider.defaults.headers.common['x-api-user'] = settings.auth.apiId;
$httpProvider.defaults.headers.common['x-api-key'] = settings.auth.apiId; $httpProvider.defaults.headers.common['x-api-key'] = settings.auth.apiId;
} }
// Handle errors
var interceptor = ['$rootScope', '$q', function ($rootScope, $q) {
function success(response) {
return response;
}
function error(response) {
//var status = response.status;
response.data = (response.data.err) ? response.data.err : response.data;
if (response.status == 0) response.data = 'Server currently unreachable';
if (response.status == 500) response.data += '(see Chrome console for more details).';
$rootScope.flash.errors.push(response.status + ': ' + response.data);
console.log(arguments);
return $q.reject(response);
}
return function (promise) {
return promise.then(success, error);
}
}];
$httpProvider.responseInterceptors.push(interceptor);
}]) }])

View file

@ -9,6 +9,7 @@ habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$
$rootScope.User = User; $rootScope.User = User;
$rootScope.user = User.user; $rootScope.user = User.user;
$rootScope.settings = User.settings; $rootScope.settings = User.settings;
$rootScope.flash = {errors: [], warnings: []};
/* /*
FIXME this is dangerous, organize helpers.coffee better, so we can group them by which controller needs them, FIXME this is dangerous, organize helpers.coffee better, so we can group them by which controller needs them,

View file

@ -84,8 +84,8 @@ html
#wrap #wrap
// Errors // Errors
ul.unstyled.alert.alert-error(ng-show='_flash.error') .unstyled.alert.alert-error(ng-repeat='error in flash.errors') {{error}}
li(ng-repeat='error in _flash.error') {{error}} .unstyled.alert.alert-error(ng-repeat='error in flash.warnings') {{error}}
//if they hide the header, we still need user-menu visible //if they hide the header, we still need user-menu visible
div(ng-if='user.preferences.hideHeader') div(ng-if='user.preferences.hideHeader')