mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-19 17:38:19 +08:00
ui: better domain_user page performance
This commit is contained in:
7 files changed
+35
-15
No files matched your search
@@ -96,7 +96,8 @@ class DomainDashboardHandler extends ManageHandler {
|
||||
|
||||
class DomainUserHandler extends ManageHandler {
|
||||
@requireSudo
|
||||
async get({ domainId }) {
|
||||
@param('format', Types.Range(['default', 'raw']), true)
|
||||
async get({ domainId }, format = 'default') {
|
||||
const rudocs = {};
|
||||
const [dudocs, roles] = await Promise.all([
|
||||
domain.getMultiUserInDomain(domainId, {
|
||||
@@ -107,15 +108,13 @@ class DomainUserHandler extends ManageHandler {
|
||||
}).toArray(),
|
||||
domain.getRoles(domainId),
|
||||
]);
|
||||
const uids = dudocs.map((dudoc) => dudoc.uid);
|
||||
const udict = await user.getList(domainId, uids);
|
||||
for (const role of roles) rudocs[role._id] = [];
|
||||
for (const dudoc of dudocs) {
|
||||
const udoc = udict[dudoc.uid];
|
||||
if (!(udoc.priv & PRIV.PRIV_USER_PROFILE)) continue;
|
||||
rudocs[udoc.role || 'default'].push(udoc);
|
||||
// TODO: switch to getListForRender for better performance
|
||||
const udict = await user.getList(domainId, dudocs.map((dudoc) => dudoc.uid));
|
||||
const users = dudocs.filter((dudoc) => udict[dudoc.uid].priv & PRIV.PRIV_USER_PROFILE);
|
||||
for (const role of roles) {
|
||||
rudocs[role._id] = users.filter((dudoc) => dudoc.role === role._id).map((i) => udict[i.uid]);
|
||||
}
|
||||
this.response.template = 'domain_user.html';
|
||||
this.response.template = format === 'raw' ? 'domain_user_raw.html' : 'domain_user.html';
|
||||
this.response.body = {
|
||||
roles, rudocs, udict, domain: this.domain,
|
||||
};
|
||||
|
||||
Reference in new issue
Block a user