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-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.user;
$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,

View file

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