diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGallerySelectableItem.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGallerySelectableItem.kt index b7e1e2e35..55a7f1014 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGallerySelectableItem.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/gallery/MediaGallerySelectableItem.kt @@ -1,9 +1,15 @@ package org.thoughtcrime.securesms.mediasend.v2.gallery +import android.graphics.drawable.Drawable import android.view.View import android.widget.ImageView import android.widget.TextView +import com.bumptech.glide.load.DataSource +import com.bumptech.glide.load.engine.GlideException +import com.bumptech.glide.request.RequestListener +import com.bumptech.glide.request.target.Target import com.google.android.exoplayer2.ui.AspectRatioFrameLayout +import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.mediasend.Media import org.thoughtcrime.securesms.mediasend.MediaFolder @@ -18,6 +24,8 @@ import org.thoughtcrime.securesms.util.visible typealias OnMediaFolderClicked = (MediaFolder) -> Unit typealias OnMediaClicked = (Media, Boolean) -> Unit +private val FILE_VIEW_HOLDER_TAG = Log.tag(MediaGallerySelectableItem.FileViewHolder::class.java) + object MediaGallerySelectableItem { fun registerAdapter( @@ -79,6 +87,7 @@ object MediaGallerySelectableItem { override fun bind(model: FileModel) { GlideApp.with(imageView) .load(DecryptableStreamUriLoader.DecryptableUri(model.media.uri)) + .addListener(ErrorLoggingRequestListener(FILE_VIEW_HOLDER_TAG)) .into(imageView) checkView?.isSelected = model.isSelected @@ -87,4 +96,13 @@ object MediaGallerySelectableItem { title?.visible = false } } + + private class ErrorLoggingRequestListener(private val tag: String) : RequestListener { + override fun onLoadFailed(e: GlideException?, model: Any?, target: Target?, isFirstResource: Boolean): Boolean { + Log.w(tag, "Failed to load media.", e) + return false + } + + override fun onResourceReady(resource: Drawable?, model: Any?, target: Target?, dataSource: DataSource?, isFirstResource: Boolean): Boolean = false + } }