summary refs log tree commit diff
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2026-05-19 16:39:50 +0200
committerRory& <root@rory.gay>2026-05-19 16:39:50 +0200
commit051c92c30ea6af1b58963acfcdbfe92e7379e43f (patch)
tree69e38182a2a4d77adcee6c45d525c2fdfd68575f
parentBundle tests: dont use gateway offload (diff)
downloadserver-ts-051c92c30ea6af1b58963acfcdbfe92e7379e43f.tar.xz
Add internal status order enum
-rw-r--r--assets/openapi.json4
-rw-r--r--assets/schemas.json4
-rw-r--r--src/gateway/opcodes/PresenceUpdate.ts4
-rw-r--r--src/schemas/uncategorised/ActivitySchema.ts4
-rw-r--r--src/util/interfaces/Status.ts9
5 files changed, 16 insertions, 9 deletions
diff --git a/assets/openapi.json b/assets/openapi.json

index 769daa67..84d02290 100644 --- a/assets/openapi.json +++ b/assets/openapi.json
@@ -246,7 +246,7 @@ "type": "boolean" }, "status": { - "$ref": "#/components/schemas/Status" + "$ref": "#/components/schemas/SetPrivateStatus" }, "activities": { "type": "array", @@ -7621,7 +7621,7 @@ "ErrorList": { "type": "object" }, - "Status": { + "SetPrivateStatus": { "enum": [ "dnd", "idle", diff --git a/assets/schemas.json b/assets/schemas.json
index 0ec5ee02..1590a7c3 100644 --- a/assets/schemas.json +++ b/assets/schemas.json
@@ -231,7 +231,7 @@ "type": "boolean" }, "status": { - "$ref": "#/definitions/Status" + "$ref": "#/definitions/SetPrivateStatus" }, "activities": { "type": "array", @@ -8118,7 +8118,7 @@ "additionalProperties": false, "$schema": "http://json-schema.org/draft-07/schema#" }, - "Status": { + "SetPrivateStatus": { "enum": [ "dnd", "idle", diff --git a/src/gateway/opcodes/PresenceUpdate.ts b/src/gateway/opcodes/PresenceUpdate.ts
index f4d9ffcf..47f84fa9 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 f0dfaf89..4e41d660 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 93e1b74f..78ea0ce7 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";