diff --git a/src/js/client.js b/src/js/client.js index 64b05eda5..c454fd334 100644 --- a/src/js/client.js +++ b/src/js/client.js @@ -1388,14 +1388,36 @@ angular.module('Application').service('Client', ['$http', '$interval', '$timeout }); }; - Client.prototype.getUsers = function (search, active, page, perPage, callback) { - if (typeof search === 'function') { - callback = search; - search = ''; - page = 1; - perPage = 5000; + Client.prototype.getAllUsers = function (callback) { + var page = 1; + var perPage = 3; + var users = []; + + function fetchMore() { + var config = { + params: { + page: page, + per_page: perPage + } + }; + + get('/api/v1/users', config, function (error, data, status) { + if (error) return callback(error); + if (status !== 200) return callback(new ClientError(status, data)); + + if (data.users.length === 0) return callback(null, users); + + users = users.concat(data.users); + page++; + + fetchMore(); + }); } + fetchMore(); + }; + + Client.prototype.getUsers = function (search, active, page, perPage, callback) { var config = { params: { page: page, @@ -1404,7 +1426,7 @@ angular.module('Application').service('Client', ['$http', '$interval', '$timeout }; if (search) config.params.search = search; - if (active !== null && typeof active !== 'undefined') config.params.active = active ? 'true' : 'false'; + if (active !== null) config.params.active = active ? 'true' : 'false'; get('/api/v1/users', config, function (error, data, status) { if (error) return callback(error); diff --git a/src/views/app.js b/src/views/app.js index d12eb0c24..e2cf97173 100644 --- a/src/views/app.js +++ b/src/views/app.js @@ -1827,7 +1827,7 @@ angular.module('Application').controller('AppController', ['$scope', '$location' }; function fetchUsers(callback) { - Client.getUsers(function (error, users) { + Client.getAllUsers(function (error, users) { if (error) return callback(error); // ensure we have something to work with in the access restriction dropdowns diff --git a/src/views/appstore.js b/src/views/appstore.js index 0991eb86a..43e1d6c7c 100644 --- a/src/views/appstore.js +++ b/src/views/appstore.js @@ -586,7 +586,7 @@ angular.module('Application').controller('AppStoreController', ['$scope', '$tran } function fetchUsers() { - Client.getUsers(function (error, users) { + Client.getAllUsers(function (error, users) { if (error) { console.error(error); return $timeout(fetchUsers, 5000); diff --git a/src/views/email.js b/src/views/email.js index 9a7402575..78e151f9d 100644 --- a/src/views/email.js +++ b/src/views/email.js @@ -902,7 +902,7 @@ angular.module('Application').controller('EmailController', ['$scope', '$locatio Client.onReady(function () { $scope.isAdminDomain = $scope.config.adminDomain === domainName; - Client.getUsers(function (error, users) { + Client.getAllUsers(function (error, users) { if (error) return console.error('Unable to get user listing.', error); // ensure we have a display value available diff --git a/src/views/users.js b/src/views/users.js index d99525ac7..fc19a80ef 100644 --- a/src/views/users.js +++ b/src/views/users.js @@ -203,7 +203,7 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio // supported types are 'json' and 'csv' $scope.userExport = function (type) { - Client.getUsers(function (error, result) { + Client.getAllUsers(function (error, result) { if (error) { Client.error('Failed to list users. Full error in the webinspector.'); return console.error('Failed to list users.', error); @@ -1104,7 +1104,7 @@ angular.module('Application').controller('UsersController', ['$scope', '$locatio }; function refreshAllUsers() { // this loads all users on Cloudron, not just current page - Client.getUsers(function (error, results) { + Client.getAllUsers(function (error, results) { if (error) return console.error(error); $scope.allUsers = results;