mirror of
https://github.com/nextcloud/android.git
synced 2024-11-27 09:39:25 +03:00
FIX OC-2101: App crash when renaming a folder while the server is down or without internet connection
This commit is contained in:
parent
6e092bf235
commit
f780062616
3 changed files with 19 additions and 15 deletions
|
@ -151,7 +151,7 @@ public class RenameFileTest extends ActivityInstrumentationTestCase2<TestActivit
|
|||
RemoteOperationResult result = mActivity.renameFile(mNewFolderName, mNewFolderPath, mOldFolderName, mOldFolderPath);
|
||||
assertTrue(result.isSuccess());
|
||||
|
||||
result = mActivity.renameFile(mNewFileName, mNewFilePath, mOldFileName, mOldFilePath);
|
||||
result = mActivity.renameFile(mNewFileName + mFileExtension, mNewFilePath + mFileExtension, mOldFileName, mOldFilePath);
|
||||
assertTrue(result.isSuccess());
|
||||
}
|
||||
|
||||
|
|
|
@ -66,6 +66,11 @@ public class RenameRemoteFileOperation extends RemoteOperation {
|
|||
return new RemoteOperationResult(ResultCode.OK);
|
||||
}
|
||||
|
||||
// check if a file with the new name already exists
|
||||
if (client.existsFile(mNewRemotePath)) {
|
||||
return new RemoteOperationResult(ResultCode.INVALID_OVERWRITE);
|
||||
}
|
||||
|
||||
move = new LocalMoveMethod( client.getBaseUri() + WebdavUtils.encodePath(mOldRemotePath),
|
||||
client.getBaseUri() + WebdavUtils.encodePath(mNewRemotePath));
|
||||
int status = client.executeMethod(move, RENAME_READ_TIMEOUT, RENAME_CONNECTION_TIMEOUT);
|
||||
|
|
|
@ -93,9 +93,8 @@ public class RenameFileOperation extends RemoteOperation {
|
|||
mNewRemotePath += OCFile.PATH_SEPARATOR;
|
||||
}
|
||||
|
||||
// check if a file with the new name already exists
|
||||
if (client.existsFile(mNewRemotePath) || // remote check could fail by network failure. by indeterminate behavior of HEAD for folders ...
|
||||
mStorageManager.getFileByPath(mNewRemotePath) != null) { // ... so local check is convenient
|
||||
// ckeck local overwrite
|
||||
if (mStorageManager.getFileByPath(mNewRemotePath) != null) {
|
||||
return new RemoteOperationResult(ResultCode.INVALID_OVERWRITE);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue