From e6ea7e456344e2735a80c5f76fdc7437fbc0ccd0 Mon Sep 17 00:00:00 2001 From: Renato Alcara Date: Fri, 20 Mar 2026 10:49:25 -0300 Subject: [PATCH] Feat/view once receive (#310) * 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. --- 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) {