GUACAMOLE-526: Move handling of request error notification to guacNotification, resolving circular dependency.

This commit is contained in:
Michael Jumper
2018-04-26 22:28:18 -07:00
parent 266b445c21
commit ae6b5fc8bb
10 changed files with 26 additions and 41 deletions

View File

@@ -379,7 +379,7 @@ angular.module('manage').controller('manageConnectionController', ['$scope', '$i
connectionService.saveConnection($scope.selectedDataSource, $scope.connection)
.then(function savedConnection() {
$location.url('/settings/' + encodeURIComponent($scope.selectedDataSource) + '/connections');
}, requestService.SHOW_NOTIFICATION);
}, guacNotification.SHOW_REQUEST_ERROR);
};
@@ -419,7 +419,7 @@ angular.module('manage').controller('manageConnectionController', ['$scope', '$i
connectionService.deleteConnection($scope.selectedDataSource, $scope.connection)
.then(function deletedConnection() {
$location.path('/settings/' + encodeURIComponent($scope.selectedDataSource) + '/connections');
}, requestService.SHOW_NOTIFICATION);
}, guacNotification.SHOW_REQUEST_ERROR);
};

View File

@@ -221,7 +221,7 @@ angular.module('manage').controller('manageConnectionGroupController', ['$scope'
connectionGroupService.saveConnectionGroup($scope.selectedDataSource, $scope.connectionGroup)
.then(function savedConnectionGroup() {
$location.path('/settings/' + encodeURIComponent($scope.selectedDataSource) + '/connections');
}, requestService.SHOW_NOTIFICATION);
}, guacNotification.SHOW_REQUEST_ERROR);
};
@@ -261,7 +261,7 @@ angular.module('manage').controller('manageConnectionGroupController', ['$scope'
connectionGroupService.deleteConnectionGroup($scope.selectedDataSource, $scope.connectionGroup)
.then(function deletedConnectionGroup() {
$location.path('/settings/' + encodeURIComponent($scope.selectedDataSource) + '/connections');
}, requestService.SHOW_NOTIFICATION);
}, guacNotification.SHOW_REQUEST_ERROR);
};

View File

@@ -342,7 +342,7 @@ angular.module('manage').controller('manageSharingProfileController', ['$scope',
sharingProfileService.saveSharingProfile($scope.selectedDataSource, $scope.sharingProfile)
.then(function savedSharingProfile() {
$location.url('/settings/' + encodeURIComponent($scope.selectedDataSource) + '/connections');
}, requestService.SHOW_NOTIFICATION);
}, guacNotification.SHOW_REQUEST_ERROR);
};
@@ -370,7 +370,7 @@ angular.module('manage').controller('manageSharingProfileController', ['$scope',
sharingProfileService.deleteSharingProfile($scope.selectedDataSource, $scope.sharingProfile)
.then(function deletedSharingProfile() {
$location.path('/settings/' + encodeURIComponent($scope.selectedDataSource) + '/connections');
}, requestService.SHOW_NOTIFICATION);
}, guacNotification.SHOW_REQUEST_ERROR);
};

View File

@@ -1141,9 +1141,9 @@ angular.module('manage').controller('manageUserController', ['$scope', '$injecto
permissionService.patchPermissions(selectedDataSource, $scope.user.username, permissionsAdded, permissionsRemoved)
.then(function patchedUserPermissions() {
$location.url('/settings/users');
}, requestService.SHOW_NOTIFICATION);
}, guacNotification.SHOW_REQUEST_ERROR);
}, requestService.SHOW_NOTIFICATION);
}, guacNotification.SHOW_REQUEST_ERROR);
};
@@ -1183,7 +1183,7 @@ angular.module('manage').controller('manageUserController', ['$scope', '$injecto
userService.deleteUser(selectedDataSource, $scope.user)
.then(function deletedUser() {
$location.path('/settings/users');
}, requestService.SHOW_NOTIFICATION);
}, guacNotification.SHOW_REQUEST_ERROR);
};

View File

@@ -21,5 +21,6 @@
* The module for code used to display arbitrary notifications.
*/
angular.module('notification', [
'rest',
'storage'
]);

View File

@@ -25,6 +25,7 @@ angular.module('notification').factory('guacNotification', ['$injector',
// Required services
var $rootScope = $injector.get('$rootScope');
var requestService = $injector.get('requestService');
var sessionStorageFactory = $injector.get('sessionStorageFactory');
var service = {};
@@ -93,26 +94,24 @@ angular.module('notification').factory('guacNotification', ['$injector',
};
/**
* Shows the given REST error response as a modal status. If a status
* notification is already currently shown, this function will have no
* effect.
* Promise error callback which displays a modal notification for all
* rejections due to REST errors. The message displayed to the user within
* the notification is provided by the contents of the @link{Error} object
* within the REST response. All other rejections, such as those due to
* JavaScript errors, are logged to the browser console without displaying
* any notification.
*
* @param {Error} error
* The error object returned from the failed REST request.
*
* @example
*
* someService.updateObject(object)
* ['catch'](guacNotification.showRequestError);
* @constant
* @type Function
*/
service.showRequestError = function showRequestError(error) {
service.SHOW_REQUEST_ERROR = requestService.createErrorCallback(function showRequestError(error) {
service.showStatus({
className : 'error',
title : 'APP.DIALOG_HEADER_ERROR',
text : error.translatableMessage,
actions : [ service.ACKNOWLEDGE_ACTION ]
});
};
});
// Hide status upon navigation
$rootScope.$on('$routeChangeSuccess', function() {

View File

@@ -22,6 +22,5 @@
* Guacamole web application.
*/
angular.module('rest', [
'auth',
'notification'
'auth'
]);

View File

@@ -27,7 +27,6 @@ angular.module('rest').factory('requestService', ['$injector',
// Required services
var $http = $injector.get('$http');
var $log = $injector.get('$log');
var guacNotification = $injector.get('guacNotification');
// Required types
var Error = $injector.get('Error');
@@ -116,19 +115,6 @@ angular.module('rest').factory('requestService', ['$injector',
$log.warn(error.type, error.message || error.translatableMessage);
});
/**
* Promise error callback which displays a modal notification for all
* rejections due to REST errors. The message displayed to the user within
* the notification is provided by the contents of the @link{Error} object
* within the REST response. All other rejections, such as those due to
* JavaScript errors, are logged to the browser console without displaying
* any notification.
*
* @constant
* @type Function
*/
service.SHOW_NOTIFICATION = service.createErrorCallback(guacNotification.showRequestError);
return service;
}]);

View File

@@ -165,7 +165,7 @@ angular.module('settings').directive('guacSettingsPreferences', [function guacSe
},
actions : [ ACKNOWLEDGE_ACTION ]
});
}, requestService.SHOW_NOTIFICATION);
}, guacNotification.SHOW_REQUEST_ERROR);
};

View File

@@ -316,7 +316,7 @@ angular.module('settings').directive('guacSettingsSessions', [function guacSetti
// Clear selection
allSelectedWrappers = {};
}, requestService.SHOW_NOTIFICATION);
}, guacNotification.SHOW_REQUEST_ERROR);
};