From 2214d140c3d72016bce364bdbfba1d3710dd9f5d Mon Sep 17 00:00:00 2001 From: iequidoo Date: Wed, 22 May 2024 20:10:55 -0300 Subject: [PATCH] fix: Don't recode images in `Viewtype::File` messages (#5617) --- src/blob.rs | 15 +++++++++++++++ src/chat.rs | 6 ++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/blob.rs b/src/blob.rs index 886f295ae..f0bcbcabd 100644 --- a/src/blob.rs +++ b/src/blob.rs @@ -1191,6 +1191,21 @@ mod tests { .await .unwrap(); + send_image_check_mediaquality( + Viewtype::File, + Some("1"), + bytes, + "png", + false, // no Exif + 1920, + 1080, + 0, + 1920, + 1080, + ) + .await + .unwrap(); + // This will be sent as Image, see [`BlobObject::maybe_sticker`] for explanation. send_image_check_mediaquality( Viewtype::Sticker, diff --git a/src/chat.rs b/src/chat.rs index dda3e3d98..33818350b 100644 --- a/src/chat.rs +++ b/src/chat.rs @@ -2619,6 +2619,7 @@ async fn prepare_msg_blob(context: &Context, msg: &mut Message) -> Result<()> { .get_blob(Param::File, context, !msg.is_increation()) .await? .with_context(|| format!("attachment missing for message of type #{}", msg.viewtype))?; + let send_as_is = msg.viewtype == Viewtype::File; if msg.viewtype == Viewtype::File || msg.viewtype == Viewtype::Image { // Correct the type, take care not to correct already very special @@ -2645,8 +2646,9 @@ async fn prepare_msg_blob(context: &Context, msg: &mut Message) -> Result<()> { } let mut maybe_sticker = msg.viewtype == Viewtype::Sticker; - if msg.viewtype == Viewtype::Image - || maybe_sticker && !msg.param.exists(Param::ForceSticker) + if !send_as_is + && (msg.viewtype == Viewtype::Image + || maybe_sticker && !msg.param.exists(Param::ForceSticker)) { blob.recode_to_image_size(context, &mut maybe_sticker) .await?;