Exit the current folder when not existing in the server any more
[pub/Android/ownCloud.git] / src / com / owncloud / android / ui / activity / FileDisplayActivity.java
index f886732..f62eb07 100644 (file)
@@ -871,27 +871,53 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
 
                 String synchFolderRemotePath = intent.getStringExtra(FileSyncService.SYNC_FOLDER_REMOTE_PATH); 
 
+                /*
                 boolean fillBlankRoot = false;
-                OCFile currentDir = getCurrentDir();
                 if (currentDir == null) {
                     currentDir = mStorageManager.getFileByPath(OCFile.PATH_SEPARATOR);
                     fillBlankRoot = (currentDir != null);                   
                 }
+                */
+
+                OCFile currentDir = getCurrentDir();
+                if (synchFolderRemotePath != null) {
+                    
+                    OCFile synchDir = getStorageManager().getFileByPath(synchFolderRemotePath);
+                    boolean needToRefresh = false;
+                    if (synchDir == null) {
+                        Log_OC.e(TAG, "SEARCHING NEW CURRENT");
+                        // after synchronizing the current folder does not exist (was deleted in the server) ; need to move to other
+                        String synchPath = synchFolderRemotePath;
+                        do { 
+                            String synchParentPath = new File(synchPath).getParent();
+                            synchParentPath = synchParentPath.endsWith(OCFile.PATH_SEPARATOR) ? synchParentPath : synchParentPath + OCFile.PATH_SEPARATOR;
+                            synchDir = getStorageManager().getFileByPath(synchParentPath);
+                            popDirname();
+                            synchPath = synchParentPath;
+                        }  while (synchDir == null);    // sooner of later will get ROOT, that never is null
+                        currentDir = synchDir;
+                        
+                        Toast.makeText(FileDisplayActivity.this, 
+                                        String.format(getString(R.string.sync_current_folder_was_removed), synchPath), 
+                                        Toast.LENGTH_LONG).show();
+                        needToRefresh = true;
+                    }
+                    
+                    if (currentDir.getRemotePath().equals(synchFolderRemotePath)) {
+                        needToRefresh = true;
+                    }
 
-                if ((synchFolderRemotePath != null && currentDir != null && (currentDir.getRemotePath().equals(synchFolderRemotePath)))
-                        || fillBlankRoot ) {
-                    if (synchResult == null || synchResult.isSuccess()) {
-                        if (!fillBlankRoot) 
-                            currentDir = getStorageManager().getFileByPath(synchFolderRemotePath);
-                        if (currentDir != null) {
-                            OCFileListFragment fileListFragment = getListOfFilesFragment();
-                            if (fileListFragment != null) {
-                                fileListFragment.listDirectory(currentDir);
-                                
-                            }
-                            if (getSecondFragment() == null)
-                                setFile(currentDir);
+                    if (needToRefresh) {
+                        OCFileListFragment fileListFragment = getListOfFilesFragment();
+                        if (fileListFragment != null) {
+                            fileListFragment.listDirectory(currentDir);
+                        }
+                        boolean existsSecondFragment = (getSecondFragment() != null); 
+                        if (!existsSecondFragment) {
+                            setFile(currentDir);
                         }
+                        //updateFragmentsVisibility(existsSecondFragment);
+                        updateNavigationElementsInActionBar(existsSecondFragment ? getFile() : null);
                     }
                 }