(js) Intercept and show HTTP errors in md-toast
This commit is contained in:
parent
24520418f9
commit
db96b2830e
|
@ -124,13 +124,14 @@
|
||||||
|
|
||||||
.config(configure)
|
.config(configure)
|
||||||
|
|
||||||
.factory('AuthInterceptor', AuthInterceptor);
|
.factory('AuthInterceptor', AuthInterceptor)
|
||||||
|
.factory('ErrorInterceptor', ErrorInterceptor);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ngInject
|
* @ngInject
|
||||||
*/
|
*/
|
||||||
configure.$inject = ['$logProvider', '$compileProvider', '$mdThemingProvider', '$httpProvider'];
|
configure.$inject = ['$logProvider', '$compileProvider', '$httpProvider', '$mdThemingProvider'];
|
||||||
function configure($logProvider, $compileProvider, $mdThemingProvider, $httpProvider) {
|
function configure($logProvider, $compileProvider, $httpProvider, $mdThemingProvider) {
|
||||||
// Accent palette
|
// Accent palette
|
||||||
$mdThemingProvider.definePalette('sogo-green', {
|
$mdThemingProvider.definePalette('sogo-green', {
|
||||||
'50': 'eaf5e9',
|
'50': 'eaf5e9',
|
||||||
|
@ -221,6 +222,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
$httpProvider.interceptors.push('AuthInterceptor');
|
$httpProvider.interceptors.push('AuthInterceptor');
|
||||||
|
$httpProvider.interceptors.push('ErrorInterceptor');
|
||||||
}
|
}
|
||||||
|
|
||||||
AuthInterceptor.$inject = ['$window', '$q'];
|
AuthInterceptor.$inject = ['$window', '$q'];
|
||||||
|
@ -238,4 +240,18 @@
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngInject
|
||||||
|
*/
|
||||||
|
ErrorInterceptor.$inject = ['$rootScope', '$q'];
|
||||||
|
function ErrorInterceptor($rootScope, $q) {
|
||||||
|
return {
|
||||||
|
responseError: function(rejection) {
|
||||||
|
// Broadcast the response error
|
||||||
|
$rootScope.$broadcast('http:Error', rejection);
|
||||||
|
return $q.reject(rejection);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
|
|
@ -9,8 +9,8 @@
|
||||||
/**
|
/**
|
||||||
* @ngInject
|
* @ngInject
|
||||||
*/
|
*/
|
||||||
navController.$inject = ['$scope', '$timeout', '$interval', '$http', '$mdSidenav', '$mdBottomSheet', '$mdMedia', '$log', 'sgConstant', 'sgSettings', 'Alarm'];
|
navController.$inject = ['$rootScope', '$scope', '$timeout', '$interval', '$http', '$mdSidenav', '$mdToast', '$mdMedia', '$log', 'sgConstant', 'sgSettings', 'Alarm'];
|
||||||
function navController($scope, $timeout, $interval, $http, $mdSidenav, $mdBottomSheet, $mdMedia, $log, sgConstant, sgSettings, Alarm) {
|
function navController($rootScope, $scope, $timeout, $interval, $http, $mdSidenav, $mdToast, $mdMedia, $log, sgConstant, sgSettings, Alarm) {
|
||||||
|
|
||||||
$scope.isPopup = sgSettings.isPopup;
|
$scope.isPopup = sgSettings.isPopup;
|
||||||
$scope.activeUser = sgSettings.activeUser();
|
$scope.activeUser = sgSettings.activeUser();
|
||||||
|
@ -64,6 +64,28 @@
|
||||||
return !$mdSidenav('left').isOpen();
|
return !$mdSidenav('left').isOpen();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function onHttpError(event, response) {
|
||||||
|
var message;
|
||||||
|
if (response.data.message)
|
||||||
|
message = response.data.message;
|
||||||
|
else
|
||||||
|
message = response.statusText;
|
||||||
|
|
||||||
|
$mdToast.show({
|
||||||
|
template: [
|
||||||
|
'<md-toast>',
|
||||||
|
' <md-icon class="md-warn md-hue-1">error_outline</md-icon>',
|
||||||
|
' <span flex>' + l(message) + '</span>',
|
||||||
|
'</md-toast>'
|
||||||
|
].join(''),
|
||||||
|
hideDelay: 5000,
|
||||||
|
position: 'top right'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Listen to HTTP errors broadcasted from HTTP interceptor
|
||||||
|
$rootScope.$on('http:Error', onHttpError);
|
||||||
|
|
||||||
Alarm.getAlarms();
|
Alarm.getAlarms();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -117,20 +117,6 @@
|
||||||
|
|
||||||
vm.message.$send().then(function(data) {
|
vm.message.$send().then(function(data) {
|
||||||
$mdDialog.hide();
|
$mdDialog.hide();
|
||||||
}, function(data) {
|
|
||||||
$mdToast.show({
|
|
||||||
controller: 'SendMessageToastController',
|
|
||||||
template: [
|
|
||||||
'<md-toast>',
|
|
||||||
' <span flex>' + l(data.message) + '</span>',
|
|
||||||
' <md-button class="md-icon-button md-primary" ng-click="closeToast()">',
|
|
||||||
' <md-icon>close</md-icon>',
|
|
||||||
' </md-button>',
|
|
||||||
'</md-toast>'
|
|
||||||
].join(''),
|
|
||||||
hideDelay: 2000,
|
|
||||||
position: 'top right'
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue