feat: allow passing of url info in text message

This commit is contained in:
Adhiraj Singh
2022-04-20 20:30:11 +05:30
parent ac17225cf3
commit 5655961d12
2 changed files with 15 additions and 9 deletions

View File

@@ -103,6 +103,7 @@ export type AnyMediaMessageContent = (
export type AnyRegularMessageContent = ( export type AnyRegularMessageContent = (
({ ({
text: string text: string
linkPreview?: WAUrlInfo
} }
& Mentionable & Buttonable & Templatable & Listable) | & Mentionable & Buttonable & Templatable & Listable) |
AnyMediaMessageContent | AnyMediaMessageContent |

View File

@@ -17,7 +17,7 @@ import {
WAMessageContent, WAMessageContent,
WAMessageStatus, WAMessageStatus,
WAProto, WAProto,
WATextMessage WATextMessage,
} from '../Types' } from '../Types'
import { generateMessageID, unixTimestampSeconds } from './generics' import { generateMessageID, unixTimestampSeconds } from './generics'
import { downloadContentFromMessage, encryptedStream, generateThumbnail, getAudioDuration, MediaDownloadOptions } from './messages-media' import { downloadContentFromMessage, encryptedStream, generateThumbnail, getAudioDuration, MediaDownloadOptions } from './messages-media'
@@ -245,21 +245,26 @@ export const generateWAMessageContent = async(
) => { ) => {
let m: WAMessageContent = {} let m: WAMessageContent = {}
if('text' in message) { 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)) { if(!!options.getUrlInfo && message.text.match(URL_REGEX)) {
try { try {
const data = await options.getUrlInfo(message.text) urlInfo = 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
} catch(error) { // ignore if fails } catch(error) { // ignore if fails
options.logger?.warn({ trace: error.stack }, 'url generation failed') 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 m.extendedTextMessage = extContent
} else if('contacts' in message) { } else if('contacts' in message) {
const contactLen = message.contacts.contacts.length const contactLen = message.contacts.contacts.length