# Pastebin zsoaV3iS diff --git a/lib/gitter-adapter.js b/lib/gitter-adapter.js --- a/lib/gitter-adapter.js +++ b/lib/gitter-adapter.js @@ -340,10 +340,33 @@ Adapter.prototype.listUsers = function(c var getRoomMembers = cache.get(uri, function() { + var index = 0; + var limit = 50; + var users = []; + var usersbyid = new Map(); + var promise = new Promise(); + function accumulate(moreusers) { + moreusers.forEach(function(user) { + if (!usersbyid.has(user.id)) { + usersbyid.set(user.id, true); + users.push(user); + } + }); + if (moreusers.length < limit) { + promise.resolve(users); + users = null; + usersbyid = null; + promise = null; + } else { + index += limit - 5; + room.users({limit:limit, skip:index}) + .then(accumulate); + } + } return this.gitterClient.rooms.join(uri) .then(function(room) { - var members = room.users(); - return members; + room.users().then(accumulate); + return promise; }); }.bind(this));