Only call the API if values have changed for operators or access controls

This commit is contained in:
Johannes Zellner
2021-09-24 13:19:07 +02:00
parent 371eea50bf
commit d1fa514499
2 changed files with 22 additions and 12 deletions

View File

@@ -456,6 +456,7 @@ angular.module('Application').controller('AppController', ['$scope', '$location'
ftp: false,
ssoAuth: false,
accessRestrictionOption: 'any',
accessRestrictionOptionCur: 'any',
accessRestriction: { users: [], groups: [] },
operators: { users: [], groups: [] },
@@ -472,6 +473,7 @@ angular.module('Application').controller('AppController', ['$scope', '$location'
$scope.access.ftp = app.manifest.addons.localstorage && app.manifest.addons.localstorage.ftp;
$scope.access.ssoAuth = (app.manifest.addons['ldap'] || app.manifest.addons['proxyAuth']) && app.sso;
$scope.access.accessRestrictionOption = app.accessRestriction ? 'groups' : 'any';
$scope.access.accessRestrictionOptionCur = app.accessRestriction ? 'groups' : 'any';
$scope.access.accessRestriction = { users: [], groups: [] };
$scope.access.operators = { users: [], groups: [] };
@@ -517,17 +519,25 @@ angular.module('Application').controller('AppController', ['$scope', '$location'
operators.groups = $scope.access.operators.groups.map(function (g) { return g.id; });
}
Client.configureApp($scope.app.id, 'access_restriction', { accessRestriction: accessRestriction }, function (error) {
async.series([
function (callback) {
if ($scope.access.accessRestrictionOption === $scope.access.accessRestrictionOptionCur && !$scope.accessForm.accessUsersSelect.$dirty && !$scope.accessForm.accessGroupsSelect.$dirty) return callback();
Client.configureApp($scope.app.id, 'access_restriction', { accessRestriction: accessRestriction }, callback);
},
function (callback) {
if (!$scope.accessForm.operatorsUsersSelect.$dirty && !$scope.accessForm.operatorsGroupsSelect.$dirty) return callback();
Client.configureApp($scope.app.id, 'operators', { operators: operators }, callback);
}
], function (error) {
if (error) return Client.error(error);
Client.configureApp($scope.app.id, 'operators', { operators: operators }, function (error) {
if (error) return Client.error(error);
$scope.accessForm.$setPristine();
$timeout(function () {
$scope.access.success = true;
$scope.access.busy = false;
}, 1000);
});
$scope.access.accessRestrictionOptionCur = $scope.access.accessRestrictionOption;
$scope.access.success = true;
$scope.access.busy = false;
});
}
};