diff --git a/UI/WebServerResources/js/Common/Common.app.js b/UI/WebServerResources/js/Common/Common.app.js index 4c327eb77..e429ec35f 100644 --- a/UI/WebServerResources/js/Common/Common.app.js +++ b/UI/WebServerResources/js/Common/Common.app.js @@ -124,13 +124,14 @@ .config(configure) - .factory('AuthInterceptor', AuthInterceptor); + .factory('AuthInterceptor', AuthInterceptor) + .factory('ErrorInterceptor', ErrorInterceptor); /** * @ngInject */ - configure.$inject = ['$logProvider', '$compileProvider', '$mdThemingProvider', '$httpProvider']; - function configure($logProvider, $compileProvider, $mdThemingProvider, $httpProvider) { + configure.$inject = ['$logProvider', '$compileProvider', '$httpProvider', '$mdThemingProvider']; + function configure($logProvider, $compileProvider, $httpProvider, $mdThemingProvider) { // Accent palette $mdThemingProvider.definePalette('sogo-green', { '50': 'eaf5e9', @@ -221,6 +222,7 @@ } $httpProvider.interceptors.push('AuthInterceptor'); + $httpProvider.interceptors.push('ErrorInterceptor'); } 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); + } + }; + } + })(); diff --git a/UI/WebServerResources/js/Common/navController.js b/UI/WebServerResources/js/Common/navController.js index 4e4e80d67..392a56e8f 100644 --- a/UI/WebServerResources/js/Common/navController.js +++ b/UI/WebServerResources/js/Common/navController.js @@ -9,8 +9,8 @@ /** * @ngInject */ - navController.$inject = ['$scope', '$timeout', '$interval', '$http', '$mdSidenav', '$mdBottomSheet', '$mdMedia', '$log', 'sgConstant', 'sgSettings', 'Alarm']; - function navController($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($rootScope, $scope, $timeout, $interval, $http, $mdSidenav, $mdToast, $mdMedia, $log, sgConstant, sgSettings, Alarm) { $scope.isPopup = sgSettings.isPopup; $scope.activeUser = sgSettings.activeUser(); @@ -64,6 +64,28 @@ 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: [ + '', + ' error_outline', + ' ' + l(message) + '', + '' + ].join(''), + hideDelay: 5000, + position: 'top right' + }); + } + + // Listen to HTTP errors broadcasted from HTTP interceptor + $rootScope.$on('http:Error', onHttpError); + Alarm.getAlarms(); } diff --git a/UI/WebServerResources/js/Mailer/MessageEditorController.js b/UI/WebServerResources/js/Mailer/MessageEditorController.js index ea3550b20..ba574409f 100644 --- a/UI/WebServerResources/js/Mailer/MessageEditorController.js +++ b/UI/WebServerResources/js/Mailer/MessageEditorController.js @@ -117,20 +117,6 @@ vm.message.$send().then(function(data) { $mdDialog.hide(); - }, function(data) { - $mdToast.show({ - controller: 'SendMessageToastController', - template: [ - '', - ' ' + l(data.message) + '', - ' ', - ' close', - ' ', - '' - ].join(''), - hideDelay: 2000, - position: 'top right' - }); }); }