add media cache option

This commit is contained in:
Adhiraj Singh
2021-08-22 14:30:48 +05:30
parent 77fb0322fd
commit acc551a3f1
2 changed files with 12 additions and 1 deletions

View File

@@ -135,6 +135,8 @@ export type WAMediaUploadFunction = (readStream: ReadStream, opts: { fileEncSha2
export type MediaGenerationOptions = {
logger?: Logger
upload: WAMediaUploadFunction
/** cache media so it does not have to be uploaded again */
mediaCache?: (url: string) => Promise<WAGenericMediaMessage> | WAGenericMediaMessage
}
export type MessageContentGenerationOptions = MediaGenerationOptions & {
getUrlInfo?: (text: string) => Promise<WAUrlInfo>

View File

@@ -63,6 +63,15 @@ export const prepareWAMessageMedia = async(
[mediaType]: undefined,
media: message[mediaType]
}
// check for cache hit
if(typeof uploadData.media === 'object' && 'url' in uploadData.media) {
const result = !!options.mediaCache && await options.mediaCache!(uploadData.media.url?.toString())
if(result) {
return WAMessageProto.Message.fromObject({
[`${mediaType}Message`]: result
})
}
}
if(mediaType === 'document' && !uploadData.fileName) {
uploadData.fileName = 'file'
}
@@ -71,7 +80,7 @@ export const prepareWAMessageMedia = async(
}
const requiresDurationComputation = mediaType === 'audio' && typeof uploadData.seconds === 'undefined'
const requiresThumbnailComputation = (mediaType === 'image' || mediaType === 'video') &&
!('jpegThumbnail' in uploadData)
(typeof uploadData['jpegThumbnail'] === 'undefined')
const requiresOriginalForSomeProcessing = requiresDurationComputation || requiresThumbnailComputation
const {
mediaKey,