From 4c51800b099750e4a6cfefc73ea5001fcabebf73 Mon Sep 17 00:00:00 2001 From: Adhiraj Singh Date: Wed, 1 Jun 2022 13:02:05 +0530 Subject: [PATCH] feat: add "assertMediaContent" util --- src/LegacySocket/messages.ts | 13 ++----------- src/Utils/messages.ts | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/LegacySocket/messages.ts b/src/LegacySocket/messages.ts index f842b86..c7a972a 100644 --- a/src/LegacySocket/messages.ts +++ b/src/LegacySocket/messages.ts @@ -1,8 +1,7 @@ -import { Boom } from '@hapi/boom' import { proto } from '../../WAProto' import { WA_DEFAULT_EPHEMERAL } from '../Defaults' import { AnyMessageContent, Chat, GroupMetadata, LegacySocketConfig, MediaConnInfo, MessageUpdateType, MessageUserReceipt, MessageUserReceiptUpdate, MiscMessageGenerationOptions, ParticipantAction, WAFlag, WAMessage, WAMessageCursor, WAMessageKey, WAMessageStatus, WAMessageStubType, WAMessageUpdate, WAMetric, WAUrlInfo } from '../Types' -import { downloadMediaMessage, generateWAMessage, getWAUploadToServer, MediaDownloadOptions, normalizeMessageContent, toNumber } from '../Utils' +import { assertMediaContent, downloadMediaMessage, generateWAMessage, getWAUploadToServer, MediaDownloadOptions, normalizeMessageContent, toNumber } from '../Utils' import { areJidsSameUser, BinaryNode, getBinaryNodeMessages, isJidGroup, jidNormalizedUser } from '../WABinary' import makeChatsSocket from './chats' @@ -78,13 +77,7 @@ const makeMessagesSocket = (config: LegacySocketConfig) => { } const updateMediaMessage = async(message: WAMessage) => { - const content = message.message?.audioMessage || message.message?.videoMessage || message.message?.imageMessage || message.message?.stickerMessage || message.message?.documentMessage - if(!content) { - throw new Boom( - `given message ${message.key.id} is not a media message`, - { statusCode: 400, data: message } - ) - } + const content = assertMediaContent(message.message) const response: BinaryNode = await query ({ json: { @@ -105,8 +98,6 @@ const makeMessagesSocket = (config: LegacySocketConfig) => { Object.assign(content, attrs) // update message ev.emit('messages.upsert', { messages: [message], type: 'replace' }) - - return response } const onMessage = (message: WAMessage, type: MessageUpdateType) => { diff --git a/src/Utils/messages.ts b/src/Utils/messages.ts index 3f08350..69761ec 100644 --- a/src/Utils/messages.ts +++ b/src/Utils/messages.ts @@ -614,3 +614,21 @@ export const downloadMediaMessage = async(message: WAMessage, type: 'buffer' | ' return stream } + +/** Checks whether the given message is a media message; if it is returns the inner content */ +export const assertMediaContent = (content: proto.IMessage) => { + content = normalizeMessageContent(content) + const mediaContent = content?.documentMessage + || content?.imageMessage + || content?.videoMessage + || content?.audioMessage + || content?.stickerMessage + if(!mediaContent) { + throw new Boom( + 'given message is not a media message', + { statusCode: 400, data: content } + ) + } + + return mediaContent +} \ No newline at end of file