diff --git a/ts/models/conversation.ts b/ts/models/conversation.ts index bc14d2ccf..d662c2227 100644 --- a/ts/models/conversation.ts +++ b/ts/models/conversation.ts @@ -507,62 +507,6 @@ export class ConversationModel extends Backbone.Model { return current; } - public async getQuoteAttachment(attachments: any, preview: any) { - if (attachments && attachments.length) { - return Promise.all( - attachments - .filter( - (attachment: any) => - attachment && attachment.contentType && !attachment.pending && !attachment.error - ) - .slice(0, 1) - .map(async (attachment: any) => { - const { fileName, thumbnail, contentType } = attachment; - - return { - contentType, - // Our protos library complains about this field being undefined, so we - // force it to null - fileName: fileName || null, - thumbnail: thumbnail - ? { - ...(await loadAttachmentData(thumbnail)), - objectUrl: getAbsoluteAttachmentPath(thumbnail.path), - } - : null, - }; - }) - ); - } - - if (preview && preview.length) { - return Promise.all( - preview - .filter((item: any) => item && item.image) - .slice(0, 1) - .map(async (attachment: any) => { - const { image } = attachment; - const { contentType } = image; - - return { - contentType, - // Our protos library complains about this field being undefined, so we - // force it to null - fileName: null, - thumbnail: image - ? { - ...(await loadAttachmentData(image)), - objectUrl: getAbsoluteAttachmentPath(image.path), - } - : null, - }; - }) - ); - } - - return []; - } - public async makeQuote(quotedMessage: MessageModel): Promise { const attachments = quotedMessage.get('attachments'); const preview = quotedMessage.get('preview'); @@ -2099,6 +2043,66 @@ export class ConversationModel extends Backbone.Model { } return false; } + + private async getQuoteAttachment(attachments: any, preview: any) { + if (attachments?.length) { + return Promise.all( + attachments + .filter( + (attachment: any) => + attachment && + attachment.contentType && + !attachment.pending && + !attachment.error && + attachment?.thumbnail?.path // loadAttachmentData throws if the thumbnail.path is not set + ) + .slice(0, 1) + .map(async (attachment: any) => { + const { fileName, thumbnail, contentType } = attachment; + + return { + contentType, + // Our protos library complains about this field being undefined, so we + // force it to null + fileName: fileName || null, + thumbnail: thumbnail + ? { + ...(await loadAttachmentData(thumbnail)), + objectUrl: getAbsoluteAttachmentPath(thumbnail.path), + } + : null, + }; + }) + ); + } + + if (preview?.length) { + return Promise.all( + preview + .filter((attachment: any) => attachment?.image?.path) // loadAttachmentData throws if the image.path is not set + .slice(0, 1) + .map(async (attachment: any) => { + const { image } = attachment; + const { contentType } = image; + + return { + contentType, + // Our protos library complains about this field being undefined, so we + // force it to null + fileName: null, + thumbnail: image + ? { + ...(await loadAttachmentData(image)), + objectUrl: getAbsoluteAttachmentPath(image.path), + } + : null, + }; + }) + ); + } + + return []; + } } const throttledAllConversationsDispatch = debounce(