summary refs log tree commit diff
path: root/gateway/src
diff options
context:
space:
mode:
authoruurgothat <cckhmck@gmail.com>2021-10-24 18:13:51 +0300
committeruurgothat <cckhmck@gmail.com>2021-10-24 18:13:51 +0300
commitb603b81629a7775914dcb4eae53f418c3620dbdd (patch)
treeb13cc06dcf49ebe49ffff452758e3849baa0ca2f /gateway/src
parentFormat the file (diff)
parentMerge pull request #492 from fosscord/translation (diff)
downloadserver-b603b81629a7775914dcb4eae53f418c3620dbdd.tar.xz
Merge branch 'master' of https://github.com/fosscord/fosscord-server
Diffstat (limited to 'gateway/src')
-rw-r--r--gateway/src/listener/listener.ts19
-rw-r--r--gateway/src/opcodes/LazyRequest.ts11
-rw-r--r--gateway/src/util/SessionUtils.ts4
3 files changed, 21 insertions, 13 deletions
diff --git a/gateway/src/listener/listener.ts b/gateway/src/listener/listener.ts

index 79659a1f..060de65b 100644 --- a/gateway/src/listener/listener.ts +++ b/gateway/src/listener/listener.ts
@@ -117,7 +117,7 @@ export async function setupListener(this: WebSocket) { // TODO: only subscribe for events that are in the connection intents async function consume(this: WebSocket, opts: EventOpts) { const { data, event } = opts; - const id = data.id as string; + let id = data.id as string; const permission = this.permissions[id] || new Permissions("ADMINISTRATOR"); // default permission for dm const consumer = consume.bind(this); @@ -138,6 +138,10 @@ async function consume(this: WebSocket, opts: EventOpts) { this.listen_options ); break; + case "GUILD_MEMBER_REMOVE": + if (!this.member_events[data.user.id]) break; + this.member_events[data.user.id](); + break; case "RELATIONSHIP_REMOVE": case "CHANNEL_DELETE": case "GUILD_DELETE": @@ -149,9 +153,18 @@ async function consume(this: WebSocket, opts: EventOpts) { !permission .overwriteChannel(data.permission_overwrites) .has("VIEW_CHANNEL") - ) + ) { return; - //No break needed here, we need to call the listenEvent function below + } + this.events[id] = await listenEvent(id, consumer, listenOpts); + break; + case "RELATIONSHIP_ADD": + this.events[data.user.id] = await listenEvent( + data.user.id, + handlePresenceUpdate.bind(this), + this.listen_options + ); + break; case "GUILD_CREATE": this.events[id] = await listenEvent(id, consumer, listenOpts); break; diff --git a/gateway/src/opcodes/LazyRequest.ts b/gateway/src/opcodes/LazyRequest.ts
index c304dfe7..2156070f 100644 --- a/gateway/src/opcodes/LazyRequest.ts +++ b/gateway/src/opcodes/LazyRequest.ts
@@ -1,11 +1,4 @@ -import { - EVENTEnum, - EventOpts, - getPermission, - listenEvent, - Member, - Role, -} from "@fosscord/util"; +import { getPermission, listenEvent, Member, Role } from "@fosscord/util"; import { LazyRequest } from "../schema/LazyRequest"; import { Send } from "../util/Send"; import { OPCODES } from "../util/Constants"; @@ -47,7 +40,7 @@ async function getMembers(guild_id: string, range: [number, number]) { const member_roles = members .map((m) => m.roles) .flat() - .unique((r) => r.id); + .unique((r: Role) => r.id); for (const role of member_roles) { // @ts-ignore diff --git a/gateway/src/util/SessionUtils.ts b/gateway/src/util/SessionUtils.ts
index c66c7e76..bf854042 100644 --- a/gateway/src/util/SessionUtils.ts +++ b/gateway/src/util/SessionUtils.ts
@@ -7,5 +7,7 @@ export function genVoiceToken() { } function genRanHex(size: number) { - return [...Array(size)].map(() => Math.floor(Math.random() * 16).toString(16)).join(""); + return [...Array(size)] + .map(() => Math.floor(Math.random() * 16).toString(16)) + .join(""); }