diff --git a/src/groups/search.js b/src/groups/search.js index c966f28f79aa..862be73185a8 100644 --- a/src/groups/search.js +++ b/src/groups/search.js @@ -54,16 +54,14 @@ module.exports = function (Groups) { return { users: users }; } + const results = await user.search({ + ...data, + paginate: false, + hardCap: -1, + groupName: data.groupName, + }); - data.paginate = false; - const results = await user.search(data); - - let uids = results.users.map(user => user && user.uid); - const isMembers = await Groups.isMembers(uids, data.groupName); - - results.users = results.users.filter((user, index) => isMembers[index]); - - uids = results.users.map(user => user && user.uid); + const uids = results.users.map(user => user && user.uid); const isOwners = await Groups.ownership.isOwners(uids, data.groupName); results.users.forEach(function (user, index) { diff --git a/src/user/search.js b/src/user/search.js index 969ed6812659..d1e2712209ce 100644 --- a/src/user/search.js +++ b/src/user/search.js @@ -6,6 +6,7 @@ const _ = require('lodash'); const meta = require('../meta'); const plugins = require('../plugins'); const db = require('../database'); +const groups = require('../groups'); const utils = require('../utils'); module.exports = function (User) { @@ -84,13 +85,17 @@ module.exports = function (User) { fields.push('flags'); } + if (data.groupName) { + const isMembers = await groups.isMembers(uids, data.groupName); + uids = uids.filter((uid, index) => isMembers[index]); + } + if (!fields.length) { return uids; } fields.push('uid'); let userData = await User.getUsersFields(uids, fields); - userData = userData.filter(Boolean); if (data.onlineOnly) { userData = userData.filter(user => user.status !== 'offline' && (Date.now() - user.lastonline < 300000)); }