srctree

Robin Linden parent 77d069ef 58a6c836
Revert "Migrate from Glide to Coil for image loading"

This reverts commit 1e8181f4061bc183f5b32a6d52e26a94f3858f19.

This is part 2/3 of reverts to get back to Picasso that handled imagesin the chat view without any flickering.

inlinesplit
atox/build.gradle.kts added: 20, removed: 40, total 0
@@ -79,7 +79,7 @@ dependencies {
 
implementation(libs.androidx.multidex)
 
implementation(libs.coil)
implementation(libs.bumptech.glide)
 
implementation(libs.nayuki.qrcodegen)
 
 
atox/src/main/kotlin/ui/NotificationHelper.kt added: 20, removed: 40, total 0
@@ -11,7 +11,6 @@ import android.content.Intent
import android.media.AudioAttributes
import android.media.RingtoneManager
import android.os.Build
import android.util.Log
import androidx.core.app.NotificationChannelCompat
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
@@ -22,10 +21,7 @@ import androidx.core.graphics.drawable.IconCompat
import androidx.core.graphics.drawable.toBitmap
import androidx.core.os.bundleOf
import androidx.navigation.NavDeepLinkBuilder
import coil.executeBlocking
import coil.imageLoader
import coil.request.ImageRequest
import coil.transform.CircleCropTransformation
import com.bumptech.glide.Glide
import javax.inject.Inject
import javax.inject.Singleton
import ltd.evilcorp.atox.Action
@@ -46,8 +42,6 @@ private const val MESSAGE = "aTox messages"
private const val FRIEND_REQUEST = "aTox friend requests"
private const val CALL = "aTox calls"
 
private const val TAG = "NotificationHelper"
 
@Singleton
class NotificationHelper @Inject constructor(
private val context: Context,
@@ -109,19 +103,9 @@ class NotificationHelper @Inject constructor(
 
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
val icon = if (contact.avatarUri.isNotEmpty()) {
val bmp = context.imageLoader.executeBlocking(
ImageRequest.Builder(context)
.data(contact.avatarUri)
.transformations(CircleCropTransformation())
.build(),
).drawable?.toBitmap()
 
if (bmp != null) {
IconCompat.createWithBitmap(bmp)
} else {
Log.e(TAG, "Unable to load bmp for ${contact.name} from ${contact.avatarUri}")
null
}
IconCompat.createWithBitmap(
Glide.with(context).load(contact.avatarUri).circleCrop().submit().get().toBitmap()
)
} else {
null
}
 
atox/src/main/kotlin/ui/chat/ChatAdapter.kt added: 20, removed: 40, total 0
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2020-2022 aTox contributors
// SPDX-FileCopyrightText: 2020-2021 aTox contributors
//
// SPDX-License-Identifier: GPL-3.0-only
 
@@ -19,8 +19,9 @@ import android.widget.ListView
import android.widget.ProgressBar
import android.widget.RelativeLayout
import android.widget.TextView
import coil.load
import coil.size.Precision
import com.bumptech.glide.Glide
import com.bumptech.glide.load.resource.bitmap.DownsampleStrategy
import com.bumptech.glide.signature.ObjectKey
import java.net.URLConnection
import java.text.DateFormat
import java.util.Locale
@@ -37,7 +38,6 @@ import ltd.evilcorp.core.vo.isStarted
private const val TAG = "ChatAdapter"
private const val IMAGE_TO_SCREEN_RATIO = 0.75
private const val MAX_IMAGE_HEIGHT_PX = 1000
private const val SOME_PRIME = 31
 
private fun FileTransfer.isImage() = try {
URLConnection.guessContentTypeFromName(fileName).startsWith("image/")
@@ -196,17 +196,13 @@ class ChatAdapter(
 
if (fileTransfer.isImage() && (fileTransfer.isComplete() || fileTransfer.outgoing)) {
vh.completedLayout.visibility = View.VISIBLE
vh.imagePreview.load(fileTransfer.destination) {
Glide.with(vh.imagePreview)
.load(fileTransfer.destination)
// Make sure fts with the same destination have unique caches.
memoryCacheKey(
(fileTransfer.destination.hashCode() * SOME_PRIME + fileTransfer.id.hashCode()).toString(),
)
precision(Precision.INEXACT)
size(
(Resources.getSystem().displayMetrics.widthPixels * IMAGE_TO_SCREEN_RATIO).roundToInt(),
MAX_IMAGE_HEIGHT_PX,
)
}
.signature(ObjectKey(fileTransfer.id))
.downsample(DownsampleStrategy.AT_MOST)
.override((Resources.getSystem().displayMetrics.widthPixels * IMAGE_TO_SCREEN_RATIO).roundToInt(), MAX_IMAGE_HEIGHT_PX)
.into(vh.imagePreview)
} else {
vh.completedLayout.visibility = View.GONE
}
 
gradle/libs.versions.toml added: 20, removed: 40, total 0
@@ -63,7 +63,7 @@ nayuki-qrcodegen = "io.nayuki:qrcodegen:1.8.0"
 
square-leakcanary = "com.squareup.leakcanary:leakcanary-android:2.12"
 
coil = "io.coil-kt:coil:1.4.0"
bumptech-glide = "com.github.bumptech.glide:glide:4.13.1"
 
tox4j-android-aarch64 = { module = "org.toktok:tox4j-c_aarch64-linux-android", version.ref = "tox4j-android" }
tox4j-android-arm = { module = "org.toktok:tox4j-c_armv7a-linux-androideabi", version.ref = "tox4j-android" }