From fc543f7fcd08ca8686311dd9835e15b67a371908 Mon Sep 17 00:00:00 2001 From: Paul Makles Date: Fri, 4 Mar 2022 15:52:24 +0000 Subject: [PATCH] feat: emit delete events with objects if present --- src/Client.ts | 8 ++++---- src/websocket/client.ts | 18 ++++++++++++------ 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/Client.ts b/src/Client.ts index c76fa7af..6940071f 100644 --- a/src/Client.ts +++ b/src/Client.ts @@ -3,7 +3,7 @@ import EventEmitter from "eventemitter3"; import defaultsDeep from "lodash.defaultsdeep"; import { action, makeObservable, observable } from "mobx"; import type { Session } from "revolt-api/types/Auth"; -import type { Attachment, AttachmentMetadata, SizeOptions } from "revolt-api/types/Autumn"; +import type { AttachmentMetadata, SizeOptions } from "revolt-api/types/Autumn"; import type { RevoltConfiguration } from "revolt-api/types/Core"; import { MemberCompositeKey, Role } from "revolt-api/types/Servers"; @@ -66,14 +66,14 @@ export declare interface Client { on(event: "message", listener: (message: Message) => void): this; on(event: "message/update", listener: (message: Message) => void): this; - on(event: "message/delete", listener: (id: string) => void): this; + on(event: "message/delete", listener: (id: string, message?: Message) => void): this; on(event: "channel/create", listener: (channel: Channel) => void): this; on(event: "channel/update", listener: (channel: Channel) => void): this; - on(event: "channel/delete", listener: (id: string) => void): this; + on(event: "channel/delete", listener: (id: string, channel?: Channel) => void): this; on(event: "server/update", listener: (server: Server) => void): this; - on(event: "server/delete", listener: (id: string) => void): this; + on(event: "server/delete", listener: (id: string, server?: Server) => void): this; on( event: "role/update", diff --git a/src/websocket/client.ts b/src/websocket/client.ts index bb2906f1..f6e28e1d 100644 --- a/src/websocket/client.ts +++ b/src/websocket/client.ts @@ -277,8 +277,9 @@ export class WebSocketClient { } case "MessageDelete": { + const msg = this.client.messages.get(packet.id); this.client.messages.delete(packet.id); - this.client.emit("message/delete", packet.id); + this.client.emit("message/delete", packet.id, msg); break; } @@ -311,8 +312,9 @@ export class WebSocketClient { } case "ChannelDelete": { - this.client.channels.get(packet.id)?.delete(true); - this.client.emit("channel/delete", packet.id); + const channel = this.client.channels.get(packet.id); + channel?.delete(true); + this.client.emit("channel/delete", packet.id, channel); break; } @@ -340,8 +342,9 @@ export class WebSocketClient { } case "ServerDelete": { - this.client.servers.get(packet.id)?.delete(true); - this.client.emit("server/delete", packet.id); + const server = this.client.servers.get(packet.id); + server?.delete(true); + this.client.emit("server/delete", packet.id, server); break; } @@ -452,7 +455,10 @@ export class WebSocketClient { case "UserRelationship": { const user = this.client.users.get(packet.user._id); if (user) { - user.update({ relationship: packet.status }); + user.update({ + ...packet.user, + relationship: packet.status + }); } else { this.client.users.createObj(packet.user); }