diff --git a/lib/units/websocket/index.js b/lib/units/websocket/index.js index a04e3882..f2a93255 100644 --- a/lib/units/websocket/index.js +++ b/lib/units/websocket/index.js @@ -397,8 +397,15 @@ module.exports = function(options) { , wireutil.envelope(new wire.AdbKeysUpdatedMessage()) ]) }) - .catch(dbapi.DuplicateSecondaryIndexError, function() { - // No-op + .catch(dbapi.DuplicateSecondaryIndexError, function(err) { + socket.emit('user.keys.adb.error', { + message: 'Someone already added this key' + }) + }) + .catch(Error, function(err) { + socket.emit('user.keys.adb.error', { + message: err.message + }) }) }) .on('user.keys.adb.accept', function(data) { diff --git a/res/app/components/stf/keys/add-adb-key/add-adb-key-directive.js b/res/app/components/stf/keys/add-adb-key/add-adb-key-directive.js index 8d039663..ff302810 100644 --- a/res/app/components/stf/keys/add-adb-key/add-adb-key-directive.js +++ b/res/app/components/stf/keys/add-adb-key/add-adb-key-directive.js @@ -13,12 +13,21 @@ module.exports = function addAdbKeyDirective(AdbKeysService) { , key: '' } + $scope.$on('user.keys.adb.error', function(event, error) { + $scope.$apply(function() { + $scope.error = error.message + }) + }) + + $scope.$on('user.keys.adb.updated', function() { + $scope.closeAddKey() + }) + $scope.addKey = function() { UserService.addAdbKey({ title: $scope.addForm.title , key: $scope.addForm.key }) - $scope.closeAddKey() } $scope.closeAddKey = function() { @@ -27,6 +36,7 @@ module.exports = function addAdbKeyDirective(AdbKeysService) { // TODO: cannot access to the form by name inside a directive? //$scope.adbkeyform.$setPristine() $scope.showAdd = false + $scope.error = '' } }, link: function(scope) { diff --git a/res/app/components/stf/keys/add-adb-key/add-adb-key.pug b/res/app/components/stf/keys/add-adb-key/add-adb-key.pug index efbc9b5a..2ee589b1 100644 --- a/res/app/components/stf/keys/add-adb-key/add-adb-key.pug +++ b/res/app/components/stf/keys/add-adb-key/add-adb-key.pug @@ -36,4 +36,7 @@ i.fa.fa-plus.fa-fw span(translate) Add Key + br + br + error-message(message='{{error}}') diff --git a/res/app/components/stf/user/user-service.js b/res/app/components/stf/user/user-service.js index e1de7c07..0c9e449f 100644 --- a/res/app/components/stf/user/user-service.js +++ b/res/app/components/stf/user/user-service.js @@ -24,6 +24,10 @@ module.exports = function UserServiceFactory( socket.emit('user.keys.adb.remove', key) } + socket.on('user.keys.adb.error', function(error) { + $rootScope.$broadcast('user.keys.adb.error', error) + }) + socket.on('user.keys.adb.added', function(key) { UserService.getAdbKeys().push(key) $rootScope.$broadcast('user.keys.adb.updated', user.adbKeys)