Browse Source

stop shimmer on network error and show a default picture

Signed-off-by: Abdourahamane Boinaidi <abdourahamane.boinaidi@infomaniak.com>
Abdourahamane Boinaidi 5 years ago
parent
commit
61fc005c26

+ 8 - 1
src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java

@@ -480,7 +480,7 @@ public final class ThumbnailsCacheManager {
         @Override
         protected Bitmap doInBackground(ThumbnailGenerationTaskObject... params) {
             Bitmap thumbnail = null;
-
+            boolean isError = false;
             try {
                 if (mAccount != null) {
                     OwnCloudAccount ocAccount = new OwnCloudAccount(
@@ -515,9 +515,15 @@ public final class ThumbnailsCacheManager {
 
             } catch(OutOfMemoryError oome) {
                 Log_OC.e(TAG, "Out of memory");
+                isError = true;
             } catch (Throwable t) {
                 // the app should never break due to a problem with thumbnails
                 Log_OC.e(TAG, "Generation of thumbnail for " + mFile + " failed", t);
+                isError = true;
+            } finally {
+                if (isError && mListener != null){
+                    mListener.onError();
+                }
             }
 
             return thumbnail;
@@ -707,6 +713,7 @@ public final class ThumbnailsCacheManager {
 
         public interface Listener{
             void onSuccess();
+            void onError();
         }
 
     }

+ 17 - 5
src/main/java/com/owncloud/android/ui/adapter/OCFileListAdapter.java

@@ -678,11 +678,15 @@ public class OCFileListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
                                 new ThumbnailsCacheManager.AsyncThumbnailDrawable(context.getResources(),
                                                                                   thumbnail, task);
 
-                            task.setListener(() -> {
-                                if (shimmerFrameLayout != null) {
-                                    shimmerFrameLayout.hideShimmer();
-                                    shimmerThumbnail.setVisibility(View.GONE);
-                                    thumbnailView.setVisibility(View.VISIBLE);
+                            task.setListener(new ThumbnailsCacheManager.ThumbnailGenerationTask.Listener() {
+                                @Override
+                                public void onSuccess() {
+                                    stopShimmer(shimmerFrameLayout, shimmerThumbnail, thumbnailView);
+                                }
+
+                                @Override
+                                public void onError() {
+                                    stopShimmer(shimmerFrameLayout, shimmerThumbnail, thumbnailView);
                                 }
                             });
 
@@ -708,6 +712,14 @@ public class OCFileListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
         }
     }
 
+    private static void stopShimmer(ShimmerFrameLayout shimmerFrameLayout, View shimmerThumbnail, ImageView thumbnailView) {
+        if (shimmerFrameLayout != null) {
+            shimmerFrameLayout.hideShimmer();
+            shimmerThumbnail.setVisibility(View.GONE);
+            thumbnailView.setVisibility(View.VISIBLE);
+        }
+    }
+
     private String getFooterText() {
         int filesCount = 0;
         int foldersCount = 0;