From 051c92c30ea6af1b58963acfcdbfe92e7379e43f Mon Sep 17 00:00:00 2001 From: Rory& Date: Tue, 19 May 2026 16:39:50 +0200 Subject: [PATCH] Add internal status order enum --- assets/openapi.json | Bin 971867 -> 971887 bytes assets/schemas.json | Bin 439311 -> 439331 bytes src/gateway/opcodes/PresenceUpdate.ts | 4 ++-- src/schemas/uncategorised/ActivitySchema.ts | 4 ++-- src/util/interfaces/Status.ts | 9 ++++++++- 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/assets/openapi.json b/assets/openapi.json index 769daa671b2ebb6ef93ffca9a9391c5870e9ae61..84d022900426a8d1efb1f143b7687a73b3413260 100644 GIT binary patch delta 117 zcmcb;!utIR>kVGIOsOT)tBqK#r=Ra@Lltp2>10!SL^b3J(iqqHVvHCP8>9r^6 zF#<6Y5HoL2(qp;D0n*iL&bq(-yEzLGvjQ<25VHd@2M}`tF&7YX12GQ}^KSoc&X+O= E03FLMRsaA1 delta 101 zcmaFA!us|K>kVGI)BCS6N>6|Ahe>jJ-fdR4=04r_K3zs2W&&d7?R~l|dpM_02w;(( qZm@8ftUk`If0l9h`E872Z(vM_n7lNo&x{_lO^>4 diff --git a/assets/schemas.json b/assets/schemas.json index 0ec5ee02c5e8b633c14d9c879482c933c06179a1..1590a7c3eb83d157a29be2cdf032644260155ea0 100644 GIT binary patch delta 70 zcmeBwA+`90)P{T&rqq(@o;fVq(;pmRW|^MQ!OY$~SEYTf3L_9RZJ(>ce60ecq_cpf Vzx~%-W*}w(V%F`y=CX;30RZ=H9UcGx delta 76 zcmZ4dLaP6T)P{VO$(K|`rWagd5}4j!!p1f^yi0NNg$@4G^)4~8H%qCuOQ|vfG1GP_ dRp#W1>4|e#gxhD$Wd>pvAZFb@Yc5--7yyS=9OwW5 diff --git a/src/gateway/opcodes/PresenceUpdate.ts b/src/gateway/opcodes/PresenceUpdate.ts index f4d9ffcfd..47f84fa96 100644 --- a/src/gateway/opcodes/PresenceUpdate.ts +++ b/src/gateway/opcodes/PresenceUpdate.ts @@ -17,7 +17,7 @@ */ import { WebSocket, Payload } from "@spacebar/gateway"; -import { emitEvent, PresenceUpdateEvent, PrivateStatus, PublicStatus, PublicStatusOrder, Session, User } from "@spacebar/util"; +import { emitEvent, InternalStatusOrder, PresenceUpdateEvent, PrivateStatus, PublicStatus, PublicStatusOrder, Session, User } from "@spacebar/util"; import { check } from "./instanceOf"; import { ActivitySchema } from "@spacebar/schemas"; @@ -28,7 +28,7 @@ export async function onPresenceUpdate(this: WebSocket, { d }: Payload) { if (d.status === "unknown") { const sessions = await Session.find({ where: { user_id: this.user_id } }); - d.status = sessions.sort((a, b) => PublicStatusOrder[a.getPublicStatus()] - PublicStatusOrder[b.getPublicStatus()])[0].getPublicStatus(); + d.status = sessions.sort((a, b) => InternalStatusOrder[a.status] - InternalStatusOrder[b.status])[0].getPublicStatus(); } await Session.update({ session_id: this.session_id }, { status: presence.status as PrivateStatus, activities: presence.activities }); diff --git a/src/schemas/uncategorised/ActivitySchema.ts b/src/schemas/uncategorised/ActivitySchema.ts index f0dfaf892..4e41d6604 100644 --- a/src/schemas/uncategorised/ActivitySchema.ts +++ b/src/schemas/uncategorised/ActivitySchema.ts @@ -17,7 +17,7 @@ */ // TODO: remove entity imports -import { Activity, ClientStatus, Status } from "@spacebar/util"; +import { Activity, ClientStatus, SetPrivateStatus, Status } from "@spacebar/util"; export const ActivitySchema = { $afk: Boolean, @@ -75,7 +75,7 @@ export const ActivitySchema = { export interface ActivitySchema { afk?: boolean; - status: Status; + status: SetPrivateStatus; activities?: Activity[]; since?: number; // unix time (in milliseconds) of when the client went idle, or null if the client is not idle client_status?: ClientStatus; diff --git a/src/util/interfaces/Status.ts b/src/util/interfaces/Status.ts index 93e1b74f6..78ea0ce70 100644 --- a/src/util/interfaces/Status.ts +++ b/src/util/interfaces/Status.ts @@ -23,7 +23,14 @@ export enum PublicStatusOrder { offline = 3, } -console.log(PublicStatusOrder); +export enum InternalStatusOrder { + online = 0, + idle = 1, + dnd = 2, + invisible = 3, + offline = 4, + unknown = 5, +} export type PublicStatus = keyof typeof PublicStatusOrder; export type PrivateStatus = PublicStatus | "invisible";