Display offline members in member list (#788)

* Send offline member group in LazyRequest

* Better implementation of offline member group in lazy request
This commit is contained in:
Madeline 2022-07-16 18:35:44 +10:00 committed by GitHub
parent 8e7d9906d2
commit 072f6ab862

View File

@ -42,6 +42,8 @@ async function getMembers(guild_id: string, range: [number, number]) {
.flat() .flat()
.unique((r: Role) => r.id); .unique((r: Role) => r.id);
const offlineItems = [];
for (const role of member_roles) { for (const role of member_roles) {
// @ts-ignore // @ts-ignore
const [role_members, other_members] = partition(members, (m: Member) => const [role_members, other_members] = partition(members, (m: Member) =>
@ -63,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,
@ -74,16 +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 (offlineItems.length) {
const group = {
count: offlineItems.length,
id: "offline",
};
items.push({ group });
groups.push(group);
items.push(...offlineItems);
}
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),
}; };
} }