diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt index 479e14a2..066cbf13 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt @@ -8,6 +8,7 @@ import android.graphics.Typeface import android.graphics.drawable.ColorDrawable import android.graphics.drawable.Drawable import android.net.Uri +import android.util.Size import android.util.TypedValue import android.view.Menu import android.view.View @@ -60,6 +61,7 @@ class ThreadAdapter( @SuppressLint("MissingPermission") private val hasMultipleSIMCards = (activity.subscriptionManagerCompat().activeSubscriptionInfoList?.size ?: 0) > 1 + private val maxChatBubbleWidth = activity.usableScreenSize.x * 0.8f init { setupDragListener(true) @@ -374,14 +376,20 @@ class ThreadAdapter( return false } - override fun onResourceReady(dr: Drawable?, a: Any?, t: Target?, d: DataSource?, i: Boolean) = - false + override fun onResourceReady(dr: Drawable?, a: Any?, t: Target?, d: DataSource?, i: Boolean) = false }) + // limit attachment sizes to avoid causing OOM + var wantedAttachmentSize = Size(attachment.width, attachment.height) + if (wantedAttachmentSize.width > maxChatBubbleWidth) { + val newHeight = wantedAttachmentSize.height / (wantedAttachmentSize.width / maxChatBubbleWidth) + wantedAttachmentSize = Size(maxChatBubbleWidth.toInt(), newHeight.toInt()) + } + builder = if (isTallImage) { - builder.override(attachment.width, attachment.width) + builder.override(wantedAttachmentSize.width, wantedAttachmentSize.width) } else { - builder.override(attachment.width, attachment.height) + builder.override(wantedAttachmentSize.width, wantedAttachmentSize.height) } try {