diff --git a/src/Defaults/index.ts b/src/Defaults/index.ts index 2c33f56..ecec445 100644 --- a/src/Defaults/index.ts +++ b/src/Defaults/index.ts @@ -60,17 +60,37 @@ export const DEFAULT_LEGACY_CONNECTION_CONFIG: LegacySocketConfig = { expectResponseTimeout: 60_000, } -export const MEDIA_PATH_MAP: { [T in MediaType]: string } = { +export const MEDIA_PATH_MAP: { [T in MediaType]?: string } = { image: '/mms/image', video: '/mms/video', document: '/mms/document', audio: '/mms/audio', sticker: '/mms/image', - history: '', - 'product-image': '/product/image', + 'thumbnail-link': '/mms/image', + 'product-catalog-image': '/product/image', 'md-app-state': '' } +export const MEDIA_HKDF_KEY_MAPPING = { + 'audio': 'Audio', + 'document': 'Document', + 'gif': 'Video', + 'image': 'Image', + 'ppic': '', + 'product': 'Image', + 'ptt': 'Audio', + 'sticker': 'Image', + 'video': 'Video', + 'thumbnail-document': 'Document Thumbnail', + 'thumbnail-image': 'Image Thumbnail', + 'thumbnail-video': 'Video Thumbnail', + 'thumbnail-link': 'Link Thumbnail', + 'md-msg-hist': 'History', + 'md-app-state': 'App State', + 'product-catalog-image': '', + 'payment-bg-image': 'Payment Background', +} + export const MEDIA_KEYS = Object.keys(MEDIA_PATH_MAP) as MediaType[] export const MIN_PREKEY_COUNT = 5 diff --git a/src/Types/Message.ts b/src/Types/Message.ts index 9cd6dac..5fc0f97 100644 --- a/src/Types/Message.ts +++ b/src/Types/Message.ts @@ -3,6 +3,7 @@ import type { Logger } from 'pino' import type { Readable } from 'stream' import type { URL } from 'url' import { proto } from '../../WAProto' +import { MEDIA_HKDF_KEY_MAPPING } from '../Defaults' import type { GroupMetadata } from './GroupMetadata' // export the WAMessage Prototypes @@ -75,7 +76,8 @@ type WithDimensions = { width?: number height?: number } -export type MediaType = 'image' | 'video' | 'sticker' | 'audio' | 'document' | 'history' | 'md-app-state' | 'product-image' + +export type MediaType = keyof typeof MEDIA_HKDF_KEY_MAPPING export type AnyMediaMessageContent = ( ({ image: WAMediaUpload diff --git a/src/Utils/business.ts b/src/Utils/business.ts index a2ba389..f49470e 100644 --- a/src/Utils/business.ts +++ b/src/Utils/business.ts @@ -239,7 +239,7 @@ export const uploadingNecessaryImages = async( const { directPath } = await waUploadToServer( toReadable(Buffer.concat(contentBlocks)), { - mediaType: 'product-image', + mediaType: 'product-catalog-image', fileEncSha256B64: sha, timeoutMs } diff --git a/src/Utils/history.ts b/src/Utils/history.ts index f59c618..533847d 100644 --- a/src/Utils/history.ts +++ b/src/Utils/history.ts @@ -10,7 +10,7 @@ import { downloadContentFromMessage } from './messages-media' const inflatePromise = promisify(inflate) export const downloadHistory = async(msg: proto.Message.IHistorySyncNotification) => { - const stream = await downloadContentFromMessage(msg, 'history') + const stream = await downloadContentFromMessage(msg, 'md-msg-hist') const bufferArray: Buffer[] = [] for await (const chunk of stream) { bufferArray.push(chunk) diff --git a/src/Utils/messages-media.ts b/src/Utils/messages-media.ts index d8148cc..12a6296 100644 --- a/src/Utils/messages-media.ts +++ b/src/Utils/messages-media.ts @@ -11,7 +11,7 @@ import type { Logger } from 'pino' import { Readable, Transform } from 'stream' import { URL } from 'url' import { proto } from '../../WAProto' -import { DEFAULT_ORIGIN, MEDIA_PATH_MAP } from '../Defaults' +import { DEFAULT_ORIGIN, MEDIA_HKDF_KEY_MAPPING, MEDIA_PATH_MAP } from '../Defaults' import { BaileysEventMap, CommonSocketConfig, DownloadableMessage, MediaConnInfo, MediaDecryptionKeyInfo, MediaType, MessageType, WAGenericMediaMessage, WAMediaUpload, WAMediaUploadFunction, WAMessageContent } from '../Types' import { BinaryNode, getBinaryNodeChild, getBinaryNodeChildBuffer, jidNormalizedUser } from '../WABinary' import { aesDecryptGCM, aesEncryptGCM, hkdf } from './crypto' @@ -50,16 +50,7 @@ const getImageProcessingLibrary = async() => { } export const hkdfInfoKey = (type: MediaType) => { - let str: string = type - if(type === 'sticker') { - str = 'image' - } - - if(type === 'md-app-state') { - str = 'App State' - } - - const hkdfInfo = str[0].toUpperCase() + str.slice(1) + const hkdfInfo = MEDIA_HKDF_KEY_MAPPING[type] return `WhatsApp ${hkdfInfo} Keys` } diff --git a/src/Utils/messages.ts b/src/Utils/messages.ts index a7f93b3..53206c1 100644 --- a/src/Utils/messages.ts +++ b/src/Utils/messages.ts @@ -37,15 +37,13 @@ type MediaUploadData = { mimetype?: string } -const MIMETYPE_MAP: { [T in MediaType]: string } = { +const MIMETYPE_MAP: { [T in MediaType]?: string } = { image: 'image/jpeg', video: 'video/mp4', document: 'application/pdf', audio: 'audio/ogg; codecs=opus', sticker: 'image/webp', - history: 'application/x-protobuf', - 'product-image': 'image/jpeg', - 'md-app-state': 'application/x-protobuf', + 'product-catalog-image': 'image/jpeg', } const MessageTypeProto = {