Skip to content

Commit

Permalink
Removing an already deleted file in server, will delete local data
Browse files Browse the repository at this point in the history
  • Loading branch information
abelgardep committed May 11, 2021
1 parent 700d4f3 commit 88faed5
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -625,21 +625,6 @@ class FileDataStorageManager : KoinComponent {
// return updatedCount > 0
}

fun removeFolder(folder: OCFile?, removeDBData: Boolean, removeLocalContent: Boolean): Boolean {
return false
// FIXME: 13/10/2020 : New_arch: Remove file
// var success = true
// if (folder != null && folder.isFolder) {
// if (removeDBData && folder.fileId != -1L) {
// success = removeFolderInDb(folder)
// }
// if (removeLocalContent && success) {
// success = removeLocalFolder(folder)
// }
// }
// return success
}

/**
* Updates database and file system for a file or folder that was moved to a different location.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@
import com.owncloud.android.lib.resources.files.RemoteFile;
import com.owncloud.android.lib.resources.files.services.implementation.OCFileService;
import com.owncloud.android.operations.common.SyncOperation;
import com.owncloud.android.presentation.ui.files.operations.FileOperation;
import com.owncloud.android.presentation.ui.files.operations.FileOperationViewModel;
import com.owncloud.android.presentation.viewmodels.files.FilesViewModel;
import com.owncloud.android.services.OperationsService;
import com.owncloud.android.utils.FileStorageUtils;
Expand Down Expand Up @@ -271,17 +273,11 @@ private boolean folderChanged(RemoteFile remoteFolder) {
}

private void removeLocalFolder() {
FileDataStorageManager storageManager = getStorageManager();
if (storageManager.fileExists(mLocalFolder.getId())) {
String currentSavePath = FileStorageUtils.getSavePath(mAccount.name);
storageManager.removeFolder(
mLocalFolder,
true,
(mLocalFolder.isAvailableLocally() &&
mLocalFolder.getStoragePath().startsWith(currentSavePath)
)
);
}
FileOperationViewModel fileOperationViewModel = get(FileOperationViewModel.class);
ArrayList<OCFile> list = new ArrayList<>();
list.add(mLocalFolder);
FileOperation.RemoveOperation removeOperation = new FileOperation.RemoveOperation(list, false);
fileOperationViewModel.performOperation(removeOperation);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,11 @@ package com.owncloud.android.data.files.repository
import com.owncloud.android.data.LocalStorageProvider
import com.owncloud.android.data.files.datasources.LocalFileDataSource
import com.owncloud.android.data.files.datasources.RemoteFileDataSource
import com.owncloud.android.domain.exceptions.FileNotFoundException
import com.owncloud.android.domain.files.FileRepository
import com.owncloud.android.domain.files.model.MIME_DIR
import com.owncloud.android.domain.files.model.OCFile
import timber.log.Timber

class OCFileRepository(
private val localFileDataSource: LocalFileDataSource,
Expand Down Expand Up @@ -83,7 +85,11 @@ class OCFileRepository(
override fun removeFile(listOfFilesToRemove: List<OCFile>, removeOnlyLocalCopy: Boolean) {
listOfFilesToRemove.forEach { ocFile ->
if (!removeOnlyLocalCopy) {
remoteFileDataSource.removeFile(ocFile.remotePath)
try {
remoteFileDataSource.removeFile(ocFile.remotePath)
} catch (fileNotFoundException: FileNotFoundException) {
Timber.i("File ${ocFile.fileName} was not found in server. Let's remove it from local storage")
}
}
if (ocFile.isFolder) {
removeFolderRecursively(ocFile, removeOnlyLocalCopy)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import com.owncloud.android.data.LocalStorageProvider
import com.owncloud.android.data.files.datasources.LocalFileDataSource
import com.owncloud.android.data.files.datasources.RemoteFileDataSource
import com.owncloud.android.data.files.repository.OCFileRepository
import com.owncloud.android.domain.exceptions.FileNotFoundException
import com.owncloud.android.domain.exceptions.NoConnectionWithServerException
import com.owncloud.android.testutil.OC_FILE
import com.owncloud.android.testutil.OC_FOLDER
Expand Down Expand Up @@ -297,6 +298,20 @@ class OCFileRepositoryTest {
}
}

@Test
fun `remove file - ko - file not found exception`() {
every { remoteFileDataSource.removeFile(any()) } throws FileNotFoundException()
every { localStorageProvider.deleteLocalFile(any()) } returns true

ocFileRepository.removeFile(listOfFilesToRemove = listOf(OC_FILE), removeOnlyLocalCopy = false)

verify(exactly = 1) {
remoteFileDataSource.removeFile(any())
localFileDataSource.removeFile(any())
localStorageProvider.deleteLocalFile(any())
}
}

@Test(expected = NoConnectionWithServerException::class)
fun `remove file - ko - no connection exception`() {
every {
Expand Down

0 comments on commit 88faed5

Please sign in to comment.