Fix LazyRequest throwing when no offline group exists
Wrap getRepository in try catch
This commit is contained in:
parent
8ec17b74cb
commit
fe5e22c93c
@ -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,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user