From f6c72530a2b11c2ca7098422c70e237d3a76c0e7 Mon Sep 17 00:00:00 2001 From: Renato Alcara Date: Fri, 20 Mar 2026 10:45:14 -0300 Subject: [PATCH] fix: unwrap viewOnceMessage in getMediaType so enc node gets mediatype attribute Without this fix, view-once media (image/video/audio) was sent without mediatype="image/video/audio" on the enc node because getMediaType only checked the top-level message fields. The viewOnceMessage wrapper hides the inner imageMessage, causing mediatype to be empty and WA servers to silently drop the message on the recipient side. Co-Authored-By: Claude Sonnet 4.6 --- src/Socket/messages-send.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/Socket/messages-send.ts b/src/Socket/messages-send.ts index 2fe9ae8e..211b6280 100644 --- a/src/Socket/messages-send.ts +++ b/src/Socket/messages-send.ts @@ -1897,6 +1897,15 @@ export const makeMessagesSocket = (config: SocketConfig) => { } const getMediaType = (message: proto.IMessage) => { + // For view-once media, unwrap the viewOnceMessage wrapper before checking media type + const inner = + message.viewOnceMessage?.message || + message.viewOnceMessageV2?.message || + message.viewOnceMessageV2Extension?.message + if (inner) { + return getMediaType(inner) + } + if (message.imageMessage) { return 'image' } else if (message.videoMessage) {