mirror of
https://github.com/sudoxnym/habitica-self-host.git
synced 2026-08-02 04:00:36 +00:00
app.js: intercept errors, show them on page, show loading screen in interceptor
This commit is contained in:
parent
633d6fdb52
commit
b22ccc0a23
3 changed files with 23 additions and 2 deletions
|
|
@ -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);
|
||||
}])
|
||||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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')
|
||||
|
|
|
|||
Loading…
Reference in a new issue