Better implementation of offline member group in lazy request
This commit is contained in:
parent
e5b0e10cc7
commit
e085b365be
@ -42,7 +42,7 @@ async function getMembers(guild_id: string, range: [number, number]) {
|
|||||||
.flat()
|
.flat()
|
||||||
.unique((r: Role) => r.id);
|
.unique((r: Role) => r.id);
|
||||||
|
|
||||||
const offlineMembers = [];
|
const offlineItems = [];
|
||||||
|
|
||||||
for (const role of member_roles) {
|
for (const role of member_roles) {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
@ -58,12 +58,6 @@ async function getMembers(guild_id: string, range: [number, number]) {
|
|||||||
groups.push(group);
|
groups.push(group);
|
||||||
|
|
||||||
for (const member of role_members) {
|
for (const member of role_members) {
|
||||||
if (!member?.user?.sessions || !member.user.sessions.length) {
|
|
||||||
offlineMembers.push(member);
|
|
||||||
group.count--;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
const roles = member.roles
|
const roles = member.roles
|
||||||
.filter((x: Role) => x.id !== guild_id)
|
.filter((x: Role) => x.id !== guild_id)
|
||||||
.map((x: Role) => x.id);
|
.map((x: Role) => x.id);
|
||||||
@ -71,7 +65,7 @@ async function getMembers(guild_id: string, range: [number, number]) {
|
|||||||
const session = member.user.sessions.first();
|
const session = member.user.sessions.first();
|
||||||
|
|
||||||
// TODO: properly mock/hide offline/invisible status
|
// TODO: properly mock/hide offline/invisible status
|
||||||
items.push({
|
const item = {
|
||||||
member: {
|
member: {
|
||||||
...member,
|
...member,
|
||||||
roles,
|
roles,
|
||||||
@ -82,46 +76,35 @@ async function getMembers(guild_id: string, range: [number, number]) {
|
|||||||
user: { id: member.user.id },
|
user: { id: member.user.id },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
}
|
||||||
|
|
||||||
|
if (!member?.user?.sessions || !member.user.sessions.length) {
|
||||||
|
offlineItems.push(item);
|
||||||
|
group.count--;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
items.push(item);
|
||||||
}
|
}
|
||||||
members = other_members;
|
members = other_members;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (offlineMembers.length) {
|
if (offlineItems.length) {
|
||||||
const group = {
|
const group = {
|
||||||
count: offlineMembers.length,
|
count: offlineItems.length,
|
||||||
id: "offline",
|
id: "offline",
|
||||||
};
|
};
|
||||||
items.push({ group });
|
items.push({ group });
|
||||||
groups.push(group);
|
groups.push(group);
|
||||||
|
|
||||||
for (var member of offlineMembers) {
|
items.push(...offlineItems);
|
||||||
const roles = member.roles
|
|
||||||
.filter((x: Role) => x.id !== guild_id)
|
|
||||||
.map((x: Role) => x.id);
|
|
||||||
|
|
||||||
const session = member.user.sessions.first();
|
|
||||||
|
|
||||||
items.push({
|
|
||||||
member: {
|
|
||||||
...member,
|
|
||||||
roles,
|
|
||||||
user: { ...member.user, sessions: undefined },
|
|
||||||
presence: {
|
|
||||||
...session,
|
|
||||||
activities: session?.activities || [],
|
|
||||||
user: { id: member.user.id },
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
items,
|
items,
|
||||||
groups,
|
groups,
|
||||||
range,
|
range,
|
||||||
members: items.map((x) => x.member).filter((x) => x),
|
members: items.map((x) => 'member' in x ? x.member : undefined).filter(x => !!x),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user