feat: add "assertMediaContent" util

This commit is contained in:
Adhiraj Singh
2022-06-01 13:02:05 +05:30
parent f2ef5ff1d4
commit 4c51800b09
2 changed files with 20 additions and 11 deletions

View File

@@ -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) => {

View File

@@ -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
}