don't show invis

This commit is contained in:
MathMan05
2025-11-29 11:18:23 -06:00
parent 15e15fc8ad
commit e38e0f2f89
6 changed files with 12 additions and 19 deletions

View File

@@ -89,7 +89,7 @@ router.patch(
user: user,
activities: session.activities,
client_status: session?.client_status,
status: body.status === "invisible" ? "offline" : body.status,
status: session.getPublicStatus(),
},
} as PresenceUpdateEvent),
session.save(),

View File

@@ -91,7 +91,7 @@ export async function Close(this: WebSocket, code: number, reason: Buffer) {
user: userOrId,
activities: session.activities,
client_status: session?.client_status,
status: session.status,
status: session.getPublicStatus(),
},
} as PresenceUpdateEvent);
}

View File

@@ -503,7 +503,7 @@ export async function onIdentify(this: WebSocket, data: Payload) {
user: user.toPublicUser(),
activities: session.activities,
client_status: session.client_status,
status: session.status,
status: session.getPublicStatus(),
},
} as PresenceUpdateEvent),
),

View File

@@ -202,7 +202,7 @@ export async function onLazyRequest(this: WebSocket, { d }: Payload) {
user: user,
activities: session?.activities || [],
client_status: session?.client_status,
status: session?.status || "offline",
status: session?.getPublicStatus() || "offline",
} as Presence,
});
}),

View File

@@ -17,24 +17,16 @@
*/
import { WebSocket, Payload } from "@spacebar/gateway";
import {
emitEvent,
PresenceUpdateEvent,
Session,
User,
} from "@spacebar/util";
import { emitEvent, PresenceUpdateEvent, Session, User } from "@spacebar/util";
import { check } from "./instanceOf";
import { ActivitySchema } from "@spacebar/schemas"
import { ActivitySchema } from "@spacebar/schemas";
export async function onPresenceUpdate(this: WebSocket, { d }: Payload) {
const startTime = Date.now();
check.call(this, ActivitySchema, d);
const presence = d as ActivitySchema;
await Session.update(
{ session_id: this.session_id },
{ status: presence.status, activities: presence.activities },
);
await Session.update({ session_id: this.session_id }, { status: presence.status, activities: presence.activities });
const session = await Session.findOneOrFail({
select: ["client_status"],
@@ -46,13 +38,11 @@ export async function onPresenceUpdate(this: WebSocket, { d }: Payload) {
user_id: this.user_id,
data: {
user: await User.getPublicUser(this.user_id),
status: presence.status,
status: session.getPublicStatus(),
activities: presence.activities,
client_status: session.client_status,
},
} as PresenceUpdateEvent);
console.log(
`Presence update for user ${this.user_id} processed in ${Date.now() - startTime}ms`,
);
console.log(`Presence update for user ${this.user_id} processed in ${Date.now() - startTime}ms`);
}

View File

@@ -57,6 +57,9 @@ export class Session extends BaseClass {
@Column({ nullable: false, type: "varchar" })
status: Status; //TODO enum
getPublicStatus() {
return this.status === "invisible" ? "offline" : this.status;
}
}
export const PrivateSessionProjection: (keyof Session)[] = ["user_id", "session_id", "activities", "client_info", "status"];