diff --git a/assets/openapi.json b/assets/openapi.json index 769daa671..84d022900 100644 Binary files a/assets/openapi.json and b/assets/openapi.json differ diff --git a/assets/schemas.json b/assets/schemas.json index 0ec5ee02c..1590a7c3e 100644 Binary files a/assets/schemas.json and b/assets/schemas.json differ 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";