From 5655961d12552b676fe05fe1d7d08e2c27cb603d Mon Sep 17 00:00:00 2001 From: Adhiraj Singh Date: Wed, 20 Apr 2022 20:30:11 +0530 Subject: [PATCH] feat: allow passing of url info in text message --- src/Types/Message.ts | 1 + src/Utils/messages.ts | 23 ++++++++++++++--------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/Types/Message.ts b/src/Types/Message.ts index acbc41a..a83afc7 100644 --- a/src/Types/Message.ts +++ b/src/Types/Message.ts @@ -103,6 +103,7 @@ export type AnyMediaMessageContent = ( export type AnyRegularMessageContent = ( ({ text: string + linkPreview?: WAUrlInfo } & Mentionable & Buttonable & Templatable & Listable) | AnyMediaMessageContent | diff --git a/src/Utils/messages.ts b/src/Utils/messages.ts index 772ee75..32c8e50 100644 --- a/src/Utils/messages.ts +++ b/src/Utils/messages.ts @@ -17,7 +17,7 @@ import { WAMessageContent, WAMessageStatus, WAProto, - WATextMessage + WATextMessage, } from '../Types' import { generateMessageID, unixTimestampSeconds } from './generics' import { downloadContentFromMessage, encryptedStream, generateThumbnail, getAudioDuration, MediaDownloadOptions } from './messages-media' @@ -245,21 +245,26 @@ export const generateWAMessageContent = async( ) => { let m: WAMessageContent = {} if('text' in message) { - const extContent = { ...message } as WATextMessage + const extContent = { text: message.text } as WATextMessage + + let urlInfo = message.linkPreview if(!!options.getUrlInfo && message.text.match(URL_REGEX)) { try { - const data = await options.getUrlInfo(message.text) - extContent.canonicalUrl = data['canonical-url'] - extContent.matchedText = data['matched-text'] - extContent.jpegThumbnail = data.jpegThumbnail - extContent.description = data.description - extContent.title = data.title - extContent.previewType = 0 + urlInfo = await options.getUrlInfo(message.text) } catch(error) { // ignore if fails options.logger?.warn({ trace: error.stack }, 'url generation failed') } } + if(urlInfo) { + extContent.canonicalUrl = urlInfo['canonical-url'] + extContent.matchedText = urlInfo['matched-text'] + extContent.jpegThumbnail = urlInfo.jpegThumbnail + extContent.description = urlInfo.description + extContent.title = urlInfo.title + extContent.previewType = 0 + } + m.extendedTextMessage = extContent } else if('contacts' in message) { const contactLen = message.contacts.contacts.length