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";
|