Fix LazyRequest throwing when no offline group exists

Wrap getRepository in try catch
This commit is contained in:
Madeline 2022-08-02 23:18:11 +10:00
parent 8ec17b74cb
commit fe5e22c93c

View File

@ -18,22 +18,34 @@ async function getMembers(guild_id: string, range: [number, number]) {
} }
// TODO: wait for typeorm to implement ordering for .find queries https://github.com/typeorm/typeorm/issues/2620 // TODO: wait for typeorm to implement ordering for .find queries https://github.com/typeorm/typeorm/issues/2620
let members = await getRepository(Member) let members;
.createQueryBuilder("member") try {
.where("member.guild_id = :guild_id", { guild_id }) members = await getRepository(Member)
.leftJoinAndSelect("member.roles", "role") .createQueryBuilder("member")
.leftJoinAndSelect("member.user", "user") .where("member.guild_id = :guild_id", { guild_id })
.leftJoinAndSelect("user.sessions", "session") .leftJoinAndSelect("member.roles", "role")
.addSelect( .leftJoinAndSelect("member.user", "user")
"CASE WHEN session.status = 'offline' THEN 0 ELSE 1 END", .leftJoinAndSelect("user.sessions", "session")
"_status" .addSelect(
) "CASE WHEN session.status = 'offline' THEN 0 ELSE 1 END",
.orderBy("role.position", "DESC") "_status"
.addOrderBy("_status", "DESC") )
.addOrderBy("user.username", "ASC") .orderBy("role.position", "DESC")
.offset(Number(range[0]) || 0) .addOrderBy("_status", "DESC")
.limit(Number(range[1]) || 100) .addOrderBy("user.username", "ASC")
.getMany(); .offset(Number(range[0]) || 0)
.limit(Number(range[1]) || 100)
.getMany();
}
catch (e) {
console.error(`LazyRequest`, e);
return {
items: [],
groups: [],
range: [],
members: [],
}
}
const groups = [] as any[]; const groups = [] as any[];
const items = []; const items = [];
@ -79,7 +91,7 @@ async function getMembers(guild_id: string, range: [number, number]) {
}; };
if (!session || session.status == "invisible") { if (!session || session.status == "invisible") {
item.member.presence.status = "offline"; item.member.presence.status = "offline";
offlineItems.push(item); offlineItems.push(item);
group.count--; group.count--;
continue; continue;
@ -155,7 +167,7 @@ export async function onLazyRequest(this: WebSocket, { d }: Payload) {
op: "SYNC", op: "SYNC",
range: x.range, range: x.range,
})), })),
online_count: member_count - groups.find(x => x.id == "offline").count, online_count: member_count - (groups.find(x => x.id == "offline")?.count ?? 0),
member_count, member_count,
id: "everyone", id: "everyone",
guild_id, guild_id,