diff --git a/src/controllers/admin/admins-mods.js b/src/controllers/admin/admins-mods.js index e21ceeda05..aae6fa974d 100644 --- a/src/controllers/admin/admins-mods.js +++ b/src/controllers/admin/admins-mods.js @@ -1,8 +1,11 @@ 'use strict'; +const _ = require('lodash'); + const groups = require('../../groups'); const categories = require('../../categories'); const privileges = require('../../privileges'); +const user = require('../../user'); const AdminsMods = module.exports; @@ -23,9 +26,12 @@ AdminsMods.get = async function (req, res) { async function getModeratorsOfCategories(uid) { const categoryData = await categories.buildForSelect(uid, 'find', ['depth']); - const moderators = await Promise.all(categoryData.map(c => categories.getModerators(c.cid))); + const moderatorUids = await categories.getModeratorUids(categoryData.map(c => c.cid)); + const uids = _.uniq(_.flatten(moderatorUids)); + const moderatorData = await user.getUsersFields(uids, ['uid', 'username', 'userslug', 'picture']); + const moderatorMap = _.zipObject(uids, moderatorData); categoryData.forEach((c, index) => { - c.moderators = moderators[index]; + c.moderators = moderatorUids[index].map(uid => moderatorMap[uid]); }); return categoryData; }