Fix gateway not listening for new channels events

This commit is contained in:
AlTech98 2021-09-18 10:44:25 +02:00
parent 5d6fa7697a
commit 97e0c8709b
3 changed files with 9 additions and 18 deletions

View File

@ -116,7 +116,7 @@ async function consume(this: WebSocket, opts: EventOpts) {
.has("VIEW_CHANNEL") .has("VIEW_CHANNEL")
) )
return; return;
break; //No break needed here, we need to call the listenEvent function below
case "GUILD_CREATE": case "GUILD_CREATE":
this.events[id] = await listenEvent(id, consumer, listenOpts); this.events[id] = await listenEvent(id, consumer, listenOpts);
break; break;
@ -193,16 +193,11 @@ async function consume(this: WebSocket, opts: EventOpts) {
break; break;
} }
let aa = { Send(this, {
op: OPCODES.Dispatch, op: OPCODES.Dispatch,
t: event, t: event,
d: data, d: data,
s: this.sequence++, s: this.sequence++,
} });
//TODO remove before PR merge
console.log(aa)
Send(this, aa);
opts.acknowledge?.(); opts.acknowledge?.();
} }

View File

@ -84,27 +84,24 @@ export class ChannelService {
return return
} }
let channel_dto = null; await emitEvent({
event: "CHANNEL_DELETE",
data: await DmChannelDTO.from(channel, [user_id]),
user_id: user_id
});
//If the owner leave we make the first recipient in the list the new owner //If the owner leave we make the first recipient in the list the new owner
if (channel.owner_id === user_id) { if (channel.owner_id === user_id) {
channel.owner_id = channel.recipients!.find(r => r.user_id !== user_id)!.user_id //Is there a criteria to choose the new owner? channel.owner_id = channel.recipients!.find(r => r.user_id !== user_id)!.user_id //Is there a criteria to choose the new owner?
channel_dto = await DmChannelDTO.from(channel, [user_id])
await emitEvent({ await emitEvent({
event: "CHANNEL_UPDATE", event: "CHANNEL_UPDATE",
data: channel_dto, data: await DmChannelDTO.from(channel, [user_id]),
channel_id: channel.id channel_id: channel.id
}); });
} }
await channel.save() await channel.save()
await emitEvent({
event: "CHANNEL_DELETE",
data: channel_dto !== null ? channel_dto : await DmChannelDTO.from(channel, [user_id]),
user_id: user_id
});
await emitEvent({ await emitEvent({
event: "CHANNEL_RECIPIENT_REMOVE", data: { event: "CHANNEL_RECIPIENT_REMOVE", data: {
channel_id: channel.id, channel_id: channel.id,

View File

@ -5,7 +5,6 @@ import { EVENT, Event } from "../interfaces";
const events = new EventEmitter(); const events = new EventEmitter();
export async function emitEvent(payload: Omit<Event, "created_at">) { export async function emitEvent(payload: Omit<Event, "created_at">) {
console.log(payload) //TODO remove before merge
const id = (payload.channel_id || payload.user_id || payload.guild_id) as string; const id = (payload.channel_id || payload.user_id || payload.guild_id) as string;
if (!id) return console.error("event doesn't contain any id", payload); if (!id) return console.error("event doesn't contain any id", payload);