From 6c66ab2bef211699737e10b6a89d71a9ce0dc20f Mon Sep 17 00:00:00 2001 From: Wictor Nogueira <57378387+wictornogueira@users.noreply.github.com> Date: Mon, 31 May 2021 20:18:10 -0300 Subject: [PATCH] Add sendVideoAsGif option (#578) * Add sendVideoAsGif option * fix typo Co-authored-by: Pedro S. Lopez --- index.d.ts | 2 ++ src/Client.js | 2 ++ src/util/Injected.js | 9 +++++++-- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/index.d.ts b/index.d.ts index c2879ac..5016ceb 100644 --- a/index.d.ts +++ b/index.d.ts @@ -584,6 +584,8 @@ declare namespace WAWebJS { linkPreview?: boolean /** Send audio as voice message */ sendAudioAsVoice?: boolean + /** Send video as gif */ + sendVideoAsGif?: boolean /** Send media as sticker */ sendMediaAsSticker?: boolean /** Send media as document */ diff --git a/src/Client.js b/src/Client.js index e4358fa..05e3fbb 100644 --- a/src/Client.js +++ b/src/Client.js @@ -430,6 +430,7 @@ class Client extends EventEmitter { * @typedef {Object} MessageSendOptions * @property {boolean} [linkPreview=true] - Show links preview * @property {boolean} [sendAudioAsVoice=false] - Send audio as voice message + * @property {boolean} [sendVideoAsGif=false] - Send video as gif * @property {boolean} [sendMediaAsSticker=false] - Send media as a sticker * @property {boolean} [sendMediaAsDocument=false] - Send media as a document * @property {boolean} [parseVCards=true] - Automatically parse vCards and send them as contacts @@ -455,6 +456,7 @@ class Client extends EventEmitter { let internalOptions = { linkPreview: options.linkPreview === false ? undefined : true, sendAudioAsVoice: options.sendAudioAsVoice, + sendVideoAsGif: options.sendVideoAsGif, sendMediaAsSticker: options.sendMediaAsSticker, sendMediaAsDocument: options.sendMediaAsDocument, caption: options.caption, diff --git a/src/util/Injected.js b/src/util/Injected.js index 35d2317..a613bfd 100644 --- a/src/util/Injected.js +++ b/src/util/Injected.js @@ -62,7 +62,8 @@ exports.LoadUtils = () => { ? await window.WWebJS.processStickerData(options.attachment) : await window.WWebJS.processMediaData(options.attachment, { forceVoice: options.sendAudioAsVoice, - forceDocument: options.sendMediaAsDocument + forceDocument: options.sendMediaAsDocument, + forceGif: options.sendVideoAsGif }); content = options.sendMediaAsSticker ? undefined : attOptions.preview; @@ -195,7 +196,7 @@ exports.LoadUtils = () => { return stickerInfo; }; - window.WWebJS.processMediaData = async (mediaInfo, { forceVoice, forceDocument }) => { + window.WWebJS.processMediaData = async (mediaInfo, { forceVoice, forceDocument, forceGif }) => { const file = window.WWebJS.mediaInfoToFile(mediaInfo); const mData = await window.Store.OpaqueData.createFromData(file, file.type); const mediaPrep = window.Store.MediaPrep.prepRawMedia(mData, { asDocument: forceDocument }); @@ -211,6 +212,10 @@ exports.LoadUtils = () => { mediaData.type = 'ptt'; } + if (forceGif && mediaData.type === 'video') { + mediaData.isGif = true; + } + if (forceDocument) { mediaData.type = 'document'; }