Forráskód Böngészése

Merge pull request #11410 from nextcloud/fix/crash_share_deleted_folder

Fix crashes when receiving external files and last upload folder was deleted
Andy Scherzinger 2 éve
szülő
commit
a8e7796b39

+ 20 - 4
app/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java

@@ -257,7 +257,19 @@ public class ReceiveExternalFilesActivity extends FileActivity
         }
 
         initTargetFolder();
-        populateDirectoryList();
+        browseToFolderIfItExists();
+    }
+
+    private void browseToFolderIfItExists() {
+        String full_path = generatePath(mParents);
+        final OCFile fileByPath = getStorageManager().getFileByPath(full_path);
+        if (fileByPath != null) {
+            startSyncFolderOperation(fileByPath);
+            populateDirectoryList();
+        } else {
+            browseToRoot();
+            preferences.setLastUploadPath(OCFile.ROOT_PATH);
+        }
     }
 
     @Override
@@ -622,9 +634,7 @@ public class ReceiveExternalFilesActivity extends FileActivity
             super.onBackPressed();
         } else {
             mParents.pop();
-            String full_path = generatePath(mParents);
-            startSyncFolderOperation(getStorageManager().getFileByPath(full_path));
-            populateDirectoryList();
+            browseToFolderIfItExists();
         }
     }
 
@@ -826,6 +836,10 @@ public class ReceiveExternalFilesActivity extends FileActivity
     }
 
     private void startSyncFolderOperation(OCFile folder) {
+        if (folder == null) {
+            throw new IllegalArgumentException("Folder must not be null");
+        }
+
         long currentSyncTime = System.currentTimeMillis();
 
         mSyncInProgress = true;
@@ -1078,6 +1092,8 @@ public class ReceiveExternalFilesActivity extends FileActivity
     private void browseToRoot() {
         OCFile root = getStorageManager().getFileByPath(OCFile.ROOT_PATH);
         mFile = root;
+        mParents.clear();
+        mParents.add("");
         startSyncFolderOperation(root);
     }