Browse Source

PreviewImageFragment: prevent crash when redrawing menu after file deletion

For some reason this is called again after deleting the file (probably a fragment-ktx update or something).
However at this point getFileById will return null and crash the rest of the method.

This adds some checks to prevent that.

Signed-off-by: Álvaro Brey <alvaro.brey@nextcloud.com>
Álvaro Brey 2 years ago
parent
commit
37a9c438cd

+ 16 - 13
app/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.java

@@ -367,18 +367,21 @@ public class PreviewImageFragment extends FileFragment implements Injectable {
 
         if (containerActivity.getStorageManager() != null && getFile() != null) {
             // Update the file
-            setFile(containerActivity.getStorageManager().getFileById(getFile().getFileId()));
-
-            User currentUser = accountManager.getUser();
-            FileMenuFilter mf = new FileMenuFilter(
-                getFile(),
-                containerActivity,
-                getActivity(),
-                false,
-                currentUser
-            );
-
-            mf.filter(menu, true);
+            final OCFile updatedFile = containerActivity.getStorageManager().getFileById(getFile().getFileId());
+            setFile(updatedFile);
+
+            if (getFile() != null) {
+                User currentUser = accountManager.getUser();
+                FileMenuFilter mf = new FileMenuFilter(
+                    getFile(),
+                    containerActivity,
+                    getActivity(),
+                    false,
+                    currentUser
+                );
+
+                mf.filter(menu, true);
+            }
         }
 
         // additional restriction for this fragment
@@ -394,7 +397,7 @@ public class PreviewImageFragment extends FileFragment implements Injectable {
                 menu.findItem(R.id.action_unset_favorite)
         );
 
-        if (getFile().isSharedWithMe() && !getFile().canReshare()) {
+        if (getFile() != null && getFile().isSharedWithMe() && !getFile().canReshare()) {
             FileMenuFilter.hideMenuItem(menu.findItem(R.id.action_send_share_file));
         }
     }