From: David A. Velasco Date: Wed, 2 Oct 2013 14:52:36 +0000 (+0200) Subject: Exit the current folder when not existing in the server any more X-Git-Tag: oc-android-1.5.5~155^2~28 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/ab3bcf6fe6f62add623a60405ef96ea77839f7a4?hp=--cc Exit the current folder when not existing in the server any more --- ab3bcf6fe6f62add623a60405ef96ea77839f7a4 diff --git a/res/values/strings.xml b/res/values/strings.xml index 0872084a..38014550 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -129,6 +129,7 @@ Some local files were forgotten %1$d files out of the %2$s directory could not be copied into As of version 1.3.16, files uploaded from this device are copied into the local %1$s folder to prevent data loss when a single file is synced with multiple accounts.\n\nDue to this change, all files uploaded in previous versions of this app were copied into the %2$s folder. However, an error prevented the completion of this operation during account synchronization. You may either leave the file(s) as is and remove the link to %3$s, or move the file(s) into the %1$s directory and retain the link to %4$s.\n\nListed below are the local file(s), and the the remote file(s) in %5$s they were linked to. + Current folder was removed\n Browsing up to %1$s "Move all" "All files were moved" "Some files could not be moved" diff --git a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java index a50bf956..7f22bb7a 100644 --- a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java +++ b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java @@ -293,6 +293,13 @@ public class SynchronizeFolderOperation extends RemoteOperation { } } else { + if (status == HttpStatus.SC_NOT_FOUND) { + OCFile dir = mStorageManager.getFileByPath(mRemotePath); + if (dir != null) { + String currentSavePath = FileStorageUtils.getSavePath(mAccount.name); + mStorageManager.removeFile(dir, (dir.isDown() && dir.getStoragePath().startsWith(currentSavePath))); + } + } result = new RemoteOperationResult(false, status, query.getResponseHeaders()); } diff --git a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java index f8867326..f62eb078 100644 --- a/src/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -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); } }