From 6b0eb46a37d45570d6f76306f4a839e994708076 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Fri, 9 Sep 2022 20:53:09 +1000 Subject: [PATCH] Use UserSettings.status when presence is "offline" --- gateway/src/opcodes/LazyRequest.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/gateway/src/opcodes/LazyRequest.ts b/gateway/src/opcodes/LazyRequest.ts index 3b42b4f3..b0332969 100644 --- a/gateway/src/opcodes/LazyRequest.ts +++ b/gateway/src/opcodes/LazyRequest.ts @@ -26,6 +26,7 @@ async function getMembers(guild_id: string, range: [number, number]) { .leftJoinAndSelect("member.roles", "role") .leftJoinAndSelect("member.user", "user") .leftJoinAndSelect("user.sessions", "session") + .addSelect("user.settings") .addSelect( "CASE WHEN session.status = 'offline' THEN 0 ELSE 1 END", "_status" @@ -83,7 +84,7 @@ async function getMembers(guild_id: string, range: [number, number]) { "idle": 1, "dnd": 2, "invisible": 3, - "offline": 4, // for ts, will never be accessed + "offline": 4, }; // sort sessions by relevance const sessions = member.user.sessions.sort((a, b) => { @@ -91,6 +92,10 @@ async function getMembers(guild_id: string, range: [number, number]) { }); var session: Session | undefined = sessions.first(); + if (session?.status == "offline") { + session.status = member.user.settings.status || "online"; + } + const item = { member: { ...member, @@ -104,7 +109,7 @@ async function getMembers(guild_id: string, range: [number, number]) { }, }; - if (!session || session.status == "invisible") { + if (!session || session.status == "invisible" || session.status == "offline") { item.member.presence.status = "offline"; offlineItems.push(item); group.count--;