Browse Source

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
4.3
Joris Tirado 6 years ago
committed by GitHub
parent
commit
227481ac50
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 29 additions and 6 deletions
  1. +29
    -6
      submodules/devices/devices.js

+ 29
- 6
submodules/devices/devices.js View File

@ -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;


Loading…
Cancel
Save