summary refs log tree commit diff
path: root/gateway/src/opcodes/PresenceUpdate.ts
diff options
context:
space:
mode:
authorFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-10-17 00:39:54 +0200
committerFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-10-17 00:39:54 +0200
commit68053418f35e6848c529dd3fd76ce9f389eb47ac (patch)
tree7e0c64ce38dff755445a58d9186204ecc33535b2 /gateway/src/opcodes/PresenceUpdate.ts
parent:sparkles: added session + memberlist event (diff)
downloadserver-68053418f35e6848c529dd3fd76ce9f389eb47ac.tar.xz
:sparkles: User presence/status
Diffstat (limited to '')
-rw-r--r--gateway/src/opcodes/PresenceUpdate.ts24
1 files changed, 22 insertions, 2 deletions
diff --git a/gateway/src/opcodes/PresenceUpdate.ts b/gateway/src/opcodes/PresenceUpdate.ts

index 53d7b9d2..415df6ee 100644 --- a/gateway/src/opcodes/PresenceUpdate.ts +++ b/gateway/src/opcodes/PresenceUpdate.ts
@@ -1,5 +1,25 @@ import { WebSocket, Payload } from "@fosscord/gateway"; +import { emitEvent, PresenceUpdateEvent, Session, User } from "@fosscord/util"; +import { ActivitySchema } from "../schema/Activity"; +import { check } from "./instanceOf"; -export function onPresenceUpdate(this: WebSocket, data: Payload) { - // return this.close(CLOSECODES.Unknown_error); +export async function onPresenceUpdate(this: WebSocket, { d }: Payload) { + 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 emitEvent({ + event: "PRESENCE_UPDATE", + user_id: this.user_id, + data: { + user: await User.getPublicUser(this.user_id), + activities: presence.activities, + client_status: {}, // TODO: + status: presence.status, + }, + } as PresenceUpdateEvent); }