diff options
author | hunter <61890674+hunt-g@users.noreply.github.com> | 2023-03-24 20:54:20 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-25 03:54:20 +0100 |
commit | 93cb51a975ce457d6091dc7b0230610f3b958bef (patch) | |
tree | 6cc945469e5d0126e8121aadd362dd98d63d27b6 /src/api | |
parent | 0b4ae729a3fecf017583fb968b11ab46e584e0ce (diff) | |
download | Vencord-93cb51a975ce457d6091dc7b0230610f3b958bef.tar.gz Vencord-93cb51a975ce457d6091dc7b0230610f3b958bef.tar.bz2 Vencord-93cb51a975ce457d6091dc7b0230610f3b958bef.zip |
feat(MessageEvents): Promisable send/edit listeners (#514)
* promisable send/edit listeners
* added self
* Apply suggestions from code review
Co-authored-by: Nuckyz <61953774+Nuckyz@users.noreply.github.com>
* fix patches
---------
Co-authored-by: Nuckyz <61953774+Nuckyz@users.noreply.github.com>
Co-authored-by: Ven <vendicated@riseup.net>
Diffstat (limited to 'src/api')
-rw-r--r-- | src/api/MessageEvents.ts | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/api/MessageEvents.ts b/src/api/MessageEvents.ts index 1bf6b0b..aaf8d40 100644 --- a/src/api/MessageEvents.ts +++ b/src/api/MessageEvents.ts @@ -19,6 +19,7 @@ import Logger from "@utils/Logger"; import { MessageStore } from "@webpack/common"; import type { Channel, Message } from "discord-types/general"; +import type { Promisable } from "type-fest"; const MessageEventsLogger = new Logger("MessageEvents", "#e5c890"); @@ -41,16 +42,16 @@ export interface MessageExtra { stickerIds?: string[]; } -export type SendListener = (channelId: string, messageObj: MessageObject, extra: MessageExtra) => void | { cancel: boolean; }; -export type EditListener = (channelId: string, messageId: string, messageObj: MessageObject) => void; +export type SendListener = (channelId: string, messageObj: MessageObject, extra: MessageExtra) => Promisable<void | { cancel: boolean; }>; +export type EditListener = (channelId: string, messageId: string, messageObj: MessageObject) => Promisable<void>; const sendListeners = new Set<SendListener>(); const editListeners = new Set<EditListener>(); -export function _handlePreSend(channelId: string, messageObj: MessageObject, extra: MessageExtra) { +export async function _handlePreSend(channelId: string, messageObj: MessageObject, extra: MessageExtra) { for (const listener of sendListeners) { try { - const result = listener(channelId, messageObj, extra); + const result = await listener(channelId, messageObj, extra); if (result && result.cancel === true) { return true; } @@ -61,10 +62,10 @@ export function _handlePreSend(channelId: string, messageObj: MessageObject, ext return false; } -export function _handlePreEdit(channelId: string, messageId: string, messageObj: MessageObject) { +export async function _handlePreEdit(channelId: string, messageId: string, messageObj: MessageObject) { for (const listener of editListeners) { try { - listener(channelId, messageId, messageObj); + await listener(channelId, messageId, messageObj); } catch (e) { MessageEventsLogger.error("MessageEditHandler: Listener encountered an unknown error\n", e); } |