From 227481ac50ec1ca587515ff5a822d04c7e0c7430 Mon Sep 17 00:00:00 2001 From: Joris Tirado Date: Fri, 2 Aug 2019 16:55:46 -0700 Subject: [PATCH 1/2] MSPB-5: Disable device creation on click to avoid click bombing (#151) * Disable device creation on click to avoid click bombing * Remove disabled attribute on button when request fails --- submodules/devices/devices.js | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/submodules/devices/devices.js b/submodules/devices/devices.js index 233709a..74a0332 100644 --- a/submodules/devices/devices.js +++ b/submodules/devices/devices.js @@ -615,12 +615,17 @@ define(function(require) { if (monster.ui.valid(deviceForm)) { templateDevice.find('.feature-key-value:not(.active)').remove(); - var dataToSave = self.devicesMergeData(data, templateDevice, audioCodecs, videoCodecs); + var $this = $(this), + dataToSave = self.devicesMergeData(data, templateDevice, audioCodecs, videoCodecs); + + $this.prop('disabled', 'disabled'); self.devicesSaveDevice(dataToSave, function(data) { popup.dialog('close').remove(); callbackSave && callbackSave(data); + }, function() { + $this.prop('disabled', false); }); } else { templateDevice.find('.tabs-selector[data-section="basic"]').click(); @@ -1325,17 +1330,27 @@ define(function(require) { }); }, - devicesSaveDevice: function(deviceData, callback) { + /** + * @param {Object} deviceData + * @param {Function} callbackSuccess + * @param {Function} [callbackError] + */ + devicesSaveDevice: function(deviceData, callbackSuccess, callbackError) { var self = this; if (deviceData.id) { - self.devicesUpdateDevice(deviceData, callback); + self.devicesUpdateDevice(deviceData, callbackSuccess, callbackError); } else { - self.devicesCreateDevice(deviceData, callback); + self.devicesCreateDevice(deviceData, callbackSuccess, callbackError); } }, - devicesCreateDevice: function(deviceData, callback) { + /** + * @param {Object} deviceData + * @param {Function} callbackSuccess + * @param {Function} [callbackError] + */ + devicesCreateDevice: function(deviceData, callbackSuccess, callbackError) { var self = this; self.callApi({ @@ -1345,11 +1360,19 @@ define(function(require) { data: deviceData }, success: function(data) { - callback(data.data); + callbackSuccess(data.data); + }, + error: function(data) { + callbackError && callbackError(data); } }); }, + /** + * @param {Object} deviceData + * @param {Function} callbackSuccess + * @param {Function} [callbackError] + */ devicesUpdateDevice: function(deviceData, callbackSuccess, callbackError) { var self = this; From 1c0bb2798c681c0f70a73e6132c887f623a82250 Mon Sep 17 00:00:00 2001 From: Joris Tirado Date: Fri, 2 Aug 2019 17:09:18 -0700 Subject: [PATCH 2/2] MSPB-6: Allow user creation when provisioner service fails (#152) --- submodules/users/users.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/submodules/users/users.js b/submodules/users/users.js index d23d67d..691dd7b 100644 --- a/submodules/users/users.js +++ b/submodules/users/users.js @@ -1774,9 +1774,14 @@ define(function(require) { monster.request({ resource: 'common.chooseModel.getProvisionerData', - data: {}, + data: { + generateError: false + }, success: function(provisionerData) { callback(null, provisionerData.data); + }, + error: function() { + callback(null, {}); } }); } @@ -1983,7 +1988,7 @@ define(function(require) { usersFormatAddUser: function(data) { var self = this, formattedData = { - hasProvisioner: self.appFlags.common.hasProvisioner, + hasProvisioner: self.appFlags.common.hasProvisioner && !_.isEmpty(data.provisioners), sendToSameEmail: true, nextExtension: '', listExtensions: {},