Add internal status order enum

This commit is contained in:
Rory&
2026-05-19 16:39:50 +02:00
parent 154f60fdd1
commit 051c92c30e
5 changed files with 12 additions and 5 deletions
Binary file not shown.
Binary file not shown.
+2 -2
View File
@@ -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 });
+2 -2
View File
@@ -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;
+8 -1
View File
@@ -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";