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'
- });
});
}