Don't transcode incoming attachments

This commit is contained in:
Fedor Indutny 2021-07-20 12:31:23 -07:00 committed by GitHub
parent 183db8a074
commit e534dd64f2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 4 deletions

View file

@ -458,7 +458,11 @@ exports.processNewAttachment = async (
throw new TypeError('context.logger is required'); throw new TypeError('context.logger is required');
} }
const rotatedAttachment = await Attachment.autoOrientJPEG(attachment); const rotatedAttachment = await Attachment.autoOrientJPEG(
attachment,
undefined,
{ isIncoming: true }
);
const onDiskAttachment = await Attachment.migrateDataToFileSystem( const onDiskAttachment = await Attachment.migrateDataToFileSystem(
rotatedAttachment, rotatedAttachment,
{ writeNewAttachmentData } { writeNewAttachmentData }

View file

@ -180,8 +180,18 @@ export function isValid(
export async function autoOrientJPEG( export async function autoOrientJPEG(
attachment: AttachmentType, attachment: AttachmentType,
_: unknown, _: unknown,
message?: { sendHQImages?: boolean } {
sendHQImages = false,
isIncoming = false,
}: {
sendHQImages?: boolean;
isIncoming?: boolean;
} = {}
): Promise<AttachmentType> { ): Promise<AttachmentType> {
if (isIncoming && !MIME.isJPEG(attachment.contentType)) {
return attachment;
}
if (!canBeTranscoded(attachment)) { if (!canBeTranscoded(attachment)) {
return attachment; return attachment;
} }
@ -197,7 +207,7 @@ export async function autoOrientJPEG(
); );
const xcodedDataBlob = await scaleImageToLevel( const xcodedDataBlob = await scaleImageToLevel(
dataBlob, dataBlob,
message ? message.sendHQImages : false sendHQImages || isIncoming
); );
const xcodedDataArrayBuffer = await blobToArrayBuffer(xcodedDataBlob); const xcodedDataArrayBuffer = await blobToArrayBuffer(xcodedDataBlob);

View file

@ -3702,7 +3702,7 @@ Whisper.ConversationView = Whisper.View.extend({
} }
}, },
async sendStickerMessage(options: any = {}) { async sendStickerMessage(options: { packId: string; stickerId: number }) {
const { model }: { model: ConversationModel } = this; const { model }: { model: ConversationModel } = this;
try { try {