diff --git a/app/src/main/java/com/nextcloud/talk/adapters/SharedItemsGridAdapter.kt b/app/src/main/java/com/nextcloud/talk/adapters/SharedItemsGridAdapter.kt index 480836214..78beacb1d 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/SharedItemsGridAdapter.kt +++ b/app/src/main/java/com/nextcloud/talk/adapters/SharedItemsGridAdapter.kt @@ -1,18 +1,23 @@ package com.nextcloud.talk.adapters import android.net.Uri +import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView import com.facebook.drawee.backends.pipeline.Fresco +import com.facebook.drawee.controller.BaseControllerListener +import com.facebook.drawee.controller.ControllerListener import com.facebook.drawee.interfaces.DraweeController import com.facebook.drawee.view.SimpleDraweeView import com.facebook.imagepipeline.common.RotationOptions +import com.facebook.imagepipeline.image.ImageInfo import com.facebook.imagepipeline.request.ImageRequestBuilder import com.nextcloud.talk.databinding.SharedItemGridBinding import com.nextcloud.talk.repositories.SharedItem +import com.nextcloud.talk.utils.DrawableUtils import com.nextcloud.talk.utils.DrawableUtils.getDrawableResourceIdForMimeType import com.nextcloud.talk.utils.FileViewerUtils @@ -44,16 +49,22 @@ class SharedItemsGridAdapter : RecyclerView.Adapter = object : BaseControllerListener() { + override fun onFailure(id: String, e: Throwable) { + Log.w(TAG, "Failed to load image. A static mimetype image will be used", e) + setStaticMimetypeImage(currentItem, holder) + } + } + val draweeController: DraweeController = Fresco.newDraweeControllerBuilder() .setOldController(holder.binding.image.controller) .setAutoPlayAnimations(true) .setImageRequest(imageRequest) + .setControllerListener(listener) .build() holder.binding.image.controller = draweeController } else { - val drawableResourceId = getDrawableResourceIdForMimeType(currentItem.mimeType) - val drawable = ContextCompat.getDrawable(holder.binding.image.context, drawableResourceId) - holder.binding.image.hierarchy.setPlaceholderImage(drawable) + setStaticMimetypeImage(currentItem, holder) } holder.binding.image.setOnClickListener { val fileViewerUtils = FileViewerUtils(it.context, currentItem.userEntity) @@ -72,6 +83,15 @@ class SharedItemsGridAdapter : RecyclerView.Adapter = object : BaseControllerListener() { + override fun onFailure(id: String, e: Throwable) { + Log.w(TAG, "Failed to load image. A static mimetype image will be used", e) + setStaticMimetypeImage(currentItem, holder) + } + } + val draweeController: DraweeController = Fresco.newDraweeControllerBuilder() .setOldController(holder.binding.fileImage.controller) .setAutoPlayAnimations(true) .setImageRequest(imageRequest) + .setControllerListener(listener) .build() holder.binding.fileImage.controller = draweeController } else { - val drawableResourceId = DrawableUtils.getDrawableResourceIdForMimeType(currentItem.mimeType) - val drawable = ContextCompat.getDrawable(holder.binding.fileImage.context, drawableResourceId) - holder.binding.fileImage.hierarchy.setPlaceholderImage(drawable) + setStaticMimetypeImage(currentItem, holder) } holder.binding.fileItem.setOnClickListener { val fileViewerUtils = FileViewerUtils(it.context, currentItem.userEntity) @@ -79,6 +89,15 @@ class SharedItemsListAdapter : RecyclerView.Adapter