Skip to content

Commit

Permalink
Merge pull request #3709 from owncloud/new_arch/sync_folder
Browse files Browse the repository at this point in the history
[New arch] Refresh folder
  • Loading branch information
abelgardep authored Jul 7, 2022
2 parents a1f7c79 + d44c2d5 commit 22192f2
Show file tree
Hide file tree
Showing 17 changed files with 181 additions and 93 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ val remoteDataSourceModule = module {

factory<RemoteAuthenticationDataSource> { OCRemoteAuthenticationDataSource(get()) }
factory<RemoteCapabilitiesDataSource> { OCRemoteCapabilitiesDataSource(get(), get()) }
factory<RemoteFileDataSource> { OCRemoteFileDataSource(get(), get()) }
factory<RemoteFileDataSource> { OCRemoteFileDataSource(get()) }
factory<RemoteOAuthDataSource> { RemoteOAuthDataSourceImpl(get(), get()) }
factory<RemoteServerInfoDataSource> { OCRemoteServerInfoDataSource(get(), get()) }
factory<RemoteShareDataSource> { OCRemoteShareDataSource(get(), get()) }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ package com.owncloud.android.dependecyinjection

import com.owncloud.android.MainApp
import com.owncloud.android.presentation.ui.files.filelist.MainFileListViewModel
import com.owncloud.android.presentation.ui.files.operations.FileOperationViewModel
import com.owncloud.android.presentation.ui.files.operations.FileOperationsViewModel
import com.owncloud.android.presentation.ui.security.passcode.PasscodeAction
import com.owncloud.android.presentation.viewmodels.authentication.OCAuthenticationViewModel
import com.owncloud.android.presentation.viewmodels.capabilities.OCCapabilityViewModel
Expand Down Expand Up @@ -85,6 +85,6 @@ val viewModelModule = module {

viewModel { PreviewImageViewModel(get(), get(), get()) }
viewModel { FileDetailsViewModel(get(), get(), get(), get(), get()) }
viewModel { FileOperationViewModel(get(), get(), get(), get(), get(), get(), get(), get()) }
viewModel { FileOperationsViewModel(get(), get(), get(), get(), get(), get(), get(), get()) }
viewModel { MainFileListViewModel(get(), get(), get(), get(), get(), get(), get(), get(), get(), get()) }
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
import com.owncloud.android.operations.common.SyncOperation;
import com.owncloud.android.presentation.ui.files.filelist.MainFileListViewModel;
import com.owncloud.android.presentation.ui.files.operations.FileOperation;
import com.owncloud.android.presentation.ui.files.operations.FileOperationViewModel;
import com.owncloud.android.presentation.ui.files.operations.FileOperationsViewModel;
import com.owncloud.android.services.OperationsService;
import com.owncloud.android.usecases.synchronization.SynchronizeFileUseCase;
import com.owncloud.android.utils.FileStorageUtils;
Expand Down Expand Up @@ -282,11 +282,11 @@ private boolean folderChanged(RemoteFile remoteFolder) {
}

private void removeLocalFolder() {
FileOperationViewModel fileOperationViewModel = get(FileOperationViewModel.class);
FileOperationsViewModel fileOperationsViewModel = get(FileOperationsViewModel.class);
ArrayList<OCFile> list = new ArrayList<>();
list.add(mLocalFolder);
FileOperation.RemoveOperation removeOperation = new FileOperation.RemoveOperation(list, false);
fileOperationViewModel.performOperation(removeOperation);
fileOperationsViewModel.performOperation(removeOperation);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,6 @@ import com.owncloud.android.extensions.showMessageInSnackbar
import com.owncloud.android.files.FileMenuFilter
import com.owncloud.android.presentation.UIResult
import com.owncloud.android.presentation.adapters.filelist.FileListAdapter
import com.owncloud.android.presentation.fold
import com.owncloud.android.presentation.ui.common.BottomSheetFragmentItemView
import com.owncloud.android.presentation.ui.files.SortBottomSheetFragment
import com.owncloud.android.presentation.ui.files.SortBottomSheetFragment.Companion.newInstance
Expand All @@ -65,7 +64,7 @@ import com.owncloud.android.presentation.ui.files.SortType
import com.owncloud.android.presentation.ui.files.ViewType
import com.owncloud.android.presentation.ui.files.createfolder.CreateFolderDialogFragment
import com.owncloud.android.presentation.ui.files.operations.FileOperation
import com.owncloud.android.presentation.ui.files.operations.FileOperationViewModel
import com.owncloud.android.presentation.ui.files.operations.FileOperationsViewModel
import com.owncloud.android.presentation.ui.files.removefile.RemoveFilesDialogFragment
import com.owncloud.android.ui.activity.FileActivity
import com.owncloud.android.ui.activity.FileDisplayActivity
Expand All @@ -87,7 +86,7 @@ class MainFileListFragment : Fragment(),
SortOptionsView.SortOptionsListener {

private val mainFileListViewModel by viewModel<MainFileListViewModel>()
private val fileOperationsViewModel by viewModel<FileOperationViewModel>()
private val fileOperationsViewModel by viewModel<FileOperationsViewModel>()

private var _binding: MainFileListFragmentBinding? = null
private val binding get() = _binding!!
Expand Down Expand Up @@ -227,11 +226,8 @@ class MainFileListFragment : Fragment(),
}

mainFileListViewModel.refreshFolder.observe(viewLifecycleOwner, Event.EventObserver {
it.fold(
onLoading = { binding.swipeRefreshMainFileList.isRefreshing = true },
onSuccess = { binding.swipeRefreshMainFileList.isRefreshing = false },
onFailure = { binding.swipeRefreshMainFileList.isRefreshing = false }
)
binding.syncProgressBar.isIndeterminate = it.isLoading
binding.swipeRefreshMainFileList.isRefreshing = it.isLoading
})
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,7 @@ class MainFileListViewModel(
}

updateFolderToDisplay(parentDir!!)
refreshFolder(parentDir.remotePath)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ import com.owncloud.android.usecases.synchronization.SynchronizeFileUseCase
import kotlinx.coroutines.launch
import timber.log.Timber

class FileOperationViewModel(
class FileOperationsViewModel(
private val createFolderAsyncUseCase: CreateFolderAsyncUseCase,
private val copyFileUseCase: CopyFileUseCase,
private val moveFileUseCase: MoveFileUseCase,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import android.os.Bundle
import com.owncloud.android.R
import com.owncloud.android.domain.files.model.OCFile
import com.owncloud.android.presentation.ui.files.operations.FileOperation
import com.owncloud.android.presentation.ui.files.operations.FileOperationViewModel
import com.owncloud.android.presentation.ui.files.operations.FileOperationsViewModel
import com.owncloud.android.ui.dialog.ConfirmationDialogFragment
import com.owncloud.android.ui.dialog.ConfirmationDialogFragment.ConfirmationDialogFragmentListener
import org.koin.androidx.viewmodel.ext.android.sharedViewModel
Expand All @@ -39,7 +39,7 @@ import java.util.ArrayList
class RemoveFilesDialogFragment : ConfirmationDialogFragment(), ConfirmationDialogFragmentListener {

private lateinit var targetFiles: ArrayList<OCFile>
private val fileOperationViewModel: FileOperationViewModel by sharedViewModel()
private val fileOperationViewModel: FileOperationsViewModel by sharedViewModel()

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val dialog = super.onCreateDialog(savedInstanceState)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ import com.owncloud.android.operations.RefreshFolderOperation
import com.owncloud.android.presentation.UIResult
import com.owncloud.android.presentation.ui.files.filelist.MainFileListFragment
import com.owncloud.android.presentation.ui.files.operations.FileOperation
import com.owncloud.android.presentation.ui.files.operations.FileOperationViewModel
import com.owncloud.android.presentation.ui.files.operations.FileOperationsViewModel
import com.owncloud.android.presentation.ui.security.bayPassUnlockOnce
import com.owncloud.android.syncadapter.FileSyncAdapter
import com.owncloud.android.ui.fragment.FileDetailFragment
Expand Down Expand Up @@ -152,7 +152,7 @@ class FileDisplayActivity : FileActivity(),

private var localBroadcastManager: LocalBroadcastManager? = null

private val fileOperationViewModel: FileOperationViewModel by viewModel()
private val fileOperationsViewModel: FileOperationsViewModel by viewModel()

var filesUploadHelper: FilesUploadHelper? = null
internal set
Expand Down Expand Up @@ -583,7 +583,7 @@ class FileDisplayActivity : FileActivity(),
val folderToMoveAt = data.getParcelableExtra<OCFile>(FolderPickerActivity.EXTRA_FOLDER) ?: return
val files = data.getParcelableArrayListExtra<OCFile>(FolderPickerActivity.EXTRA_FILES) ?: return
val moveOperation = FileOperation.MoveOperation(listOfFilesToMove = files.toList(), targetFolder = folderToMoveAt)
fileOperationViewModel.performOperation(moveOperation)
fileOperationsViewModel.performOperation(moveOperation)
}

/**
Expand All @@ -595,7 +595,7 @@ class FileDisplayActivity : FileActivity(),
val folderToCopyAt = data.getParcelableExtra<OCFile>(FolderPickerActivity.EXTRA_FOLDER) ?: return
val files = data.getParcelableArrayListExtra<OCFile>(FolderPickerActivity.EXTRA_FILES) ?: return
val copyOperation = FileOperation.CopyOperation(listOfFilesToCopy = files.toList(), targetFolder = folderToCopyAt)
fileOperationViewModel.performOperation(copyOperation)
fileOperationsViewModel.performOperation(copyOperation)
}

override fun onBackPressed() {
Expand Down Expand Up @@ -1036,7 +1036,7 @@ class FileDisplayActivity : FileActivity(),
}

override fun syncFile(file: OCFile) {
fileOperationViewModel.performOperation(FileOperation.SynchronizeFileOperation(file, account))
fileOperationsViewModel.performOperation(FileOperation.SynchronizeFileOperation(file, account))
}

override fun openFile(file: OCFile) {
Expand Down Expand Up @@ -1439,7 +1439,7 @@ class FileDisplayActivity : FileActivity(),
val detailFragment = FileDetailFragment.newInstance(file, account)
setSecondFragment(detailFragment)
fileWaitingToPreview = file
fileOperationViewModel.performOperation(FileOperation.SynchronizeFileOperation(file, account))
fileOperationsViewModel.performOperation(FileOperation.SynchronizeFileOperation(file, account))
updateToolbar(file)
setFile(file)
}
Expand Down Expand Up @@ -1531,19 +1531,19 @@ class FileDisplayActivity : FileActivity(),
}

private fun startListeningToOperations() {
fileOperationViewModel.copyFileLiveData.observe(this, Event.EventObserver {
fileOperationsViewModel.copyFileLiveData.observe(this, Event.EventObserver {
onCopyFileOperationFinish(it)
})
fileOperationViewModel.moveFileLiveData.observe(this, Event.EventObserver {
fileOperationsViewModel.moveFileLiveData.observe(this, Event.EventObserver {
onMoveFileOperationFinish(it)
})
fileOperationViewModel.removeFileLiveData.observe(this, Event.EventObserver {
fileOperationsViewModel.removeFileLiveData.observe(this, Event.EventObserver {
onRemoveFileOperationResult(it)
})
fileOperationViewModel.renameFileLiveData.observe(this, Event.EventObserver {
fileOperationsViewModel.renameFileLiveData.observe(this, Event.EventObserver {
onRenameFileOperationFinish(it)
})
fileOperationViewModel.syncFileLiveData.observe(this, Event.EventObserver {
fileOperationsViewModel.syncFileLiveData.observe(this, Event.EventObserver {
onSynchronizeFileOperationFinish(it)
})
}
Expand All @@ -1561,12 +1561,12 @@ class FileDisplayActivity : FileActivity(),
}
PreviewTextFragment.canBePreviewed(file) -> {
startTextPreview(file)
fileOperationViewModel.performOperation(FileOperation.SynchronizeFileOperation(file, account))
fileOperationsViewModel.performOperation(FileOperation.SynchronizeFileOperation(file, account))
}
PreviewAudioFragment.canBePreviewed(file) -> {
// media preview
startAudioPreview(file, 0)
fileOperationViewModel.performOperation(FileOperation.SynchronizeFileOperation(file, account))
fileOperationsViewModel.performOperation(FileOperation.SynchronizeFileOperation(file, account))
}
PreviewVideoFragment.canBePreviewed(file) && !WorkManager.getInstance(this).isDownloadPending(account, file) -> {
// FIXME: 13/10/2020 : New_arch: Av.Offline
Expand All @@ -1583,7 +1583,7 @@ class FileDisplayActivity : FileActivity(),
// If the file is already downloaded sync it, just to update it if there is a
// new available file version
if (file.isAvailableLocally) {
fileOperationViewModel.performOperation(FileOperation.SynchronizeFileOperation(file, account))
fileOperationsViewModel.performOperation(FileOperation.SynchronizeFileOperation(file, account))
}
}
else -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,15 +87,14 @@
import com.owncloud.android.presentation.UIResult;
import com.owncloud.android.presentation.ui.files.createfolder.CreateFolderDialogFragment;
import com.owncloud.android.presentation.ui.files.operations.FileOperation;
import com.owncloud.android.presentation.ui.files.operations.FileOperationViewModel;
import com.owncloud.android.presentation.ui.files.operations.FileOperationsViewModel;
import com.owncloud.android.syncadapter.FileSyncAdapter;
import com.owncloud.android.ui.adapter.ReceiveExternalFilesAdapter;
import com.owncloud.android.ui.asynctasks.CopyAndUploadContentUrisTask;
import com.owncloud.android.ui.dialog.ConfirmationDialogFragment;
import com.owncloud.android.ui.fragment.TaskRetainerFragment;
import com.owncloud.android.ui.helpers.UriUploader;
import com.owncloud.android.utils.DisplayUtils;
import com.owncloud.android.utils.Extras;
import com.owncloud.android.utils.FileStorageUtils;
import com.owncloud.android.utils.SortFilesUtils;
import kotlin.Unit;
Expand Down Expand Up @@ -759,10 +758,10 @@ public void optionLockSelected(@NonNull LockType type) {

@Override
public void onFolderNameSet(@NotNull String newFolderName, @NotNull OCFile parentFolder) {
FileOperationViewModel fileOperationViewModel = get(FileOperationViewModel.class);
FileOperationsViewModel fileOperationsViewModel = get(FileOperationsViewModel.class);

fileOperationViewModel.performOperation(new FileOperation.CreateFolder(newFolderName, parentFolder));
fileOperationViewModel.getCreateFolder().observe(this, uiResultEvent -> {
fileOperationsViewModel.performOperation(new FileOperation.CreateFolder(newFolderName, parentFolder));
fileOperationsViewModel.getCreateFolder().observe(this, uiResultEvent -> {
UIResult<Unit> uiResult = uiResultEvent.peekContent();
if (uiResult.isSuccess()) {
updateDirectoryList();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ import com.owncloud.android.domain.files.model.OCFile
import com.owncloud.android.extensions.avoidScreenshotsIfNeeded
import com.owncloud.android.extensions.showMessageInSnackbar
import com.owncloud.android.presentation.ui.files.operations.FileOperation
import com.owncloud.android.presentation.ui.files.operations.FileOperationViewModel
import com.owncloud.android.presentation.ui.files.operations.FileOperationsViewModel
import com.owncloud.android.utils.PreferenceUtils
import org.koin.androidx.viewmodel.ext.android.sharedViewModel

Expand All @@ -46,7 +46,7 @@ import org.koin.androidx.viewmodel.ext.android.sharedViewModel
class RenameFileDialogFragment : DialogFragment(), DialogInterface.OnClickListener {

private var targetFile: OCFile? = null
private val filesViewModel: FileOperationViewModel by sharedViewModel()
private val filesViewModel: FileOperationsViewModel by sharedViewModel()

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
targetFile = requireArguments().getParcelable(ARG_TARGET_FILE)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,9 @@ import com.owncloud.android.authentication.AccountUtils
import com.owncloud.android.datamodel.FileDataStorageManager
import com.owncloud.android.domain.files.model.FileListOption
import com.owncloud.android.domain.files.model.OCFile
import com.owncloud.android.lib.common.operations.OnRemoteOperationListener
import com.owncloud.android.lib.common.operations.RemoteOperation
import com.owncloud.android.lib.common.operations.RemoteOperationResult
import com.owncloud.android.operations.SynchronizeFileOperation
import com.owncloud.android.presentation.ui.files.operations.FileOperationViewModel
import com.owncloud.android.domain.utils.Event
import com.owncloud.android.presentation.ui.files.operations.FileOperation
import com.owncloud.android.presentation.ui.files.operations.FileOperationsViewModel
import com.owncloud.android.ui.activity.FileActivity
import com.owncloud.android.ui.activity.FileDisplayActivity
import com.owncloud.android.ui.fragment.FileFragment
Expand All @@ -63,11 +61,10 @@ import java.util.Vector
*/
class PreviewImageActivity : FileActivity(),
FileFragment.ContainerActivity,
OnPageChangeListener,
OnRemoteOperationListener {
OnPageChangeListener {

private val previewImageViewModel: PreviewImageViewModel by viewModel()
private val fileOperationViewModel: FileOperationViewModel by viewModel()
private val fileOperationsViewModel: FileOperationsViewModel by viewModel()

private lateinit var viewPager: ViewPager
private lateinit var previewImagePagerAdapter: PreviewImagePagerAdapter
Expand Down Expand Up @@ -125,8 +122,8 @@ class PreviewImageActivity : FileActivity(),
}

private fun startObservingFileOperations() {
fileOperationViewModel.removeFileLiveData.observe(this, {
if (it.getContentIfNotHandled()?.isSuccess == true) {
fileOperationsViewModel.removeFileLiveData.observe(this, Event.EventObserver {
if (it.isSuccess) {
finish()
}
})
Expand Down Expand Up @@ -213,19 +210,6 @@ class PreviewImageActivity : FileActivity(),
}
}

override fun onRemoteOperationFinish(operation: RemoteOperation<*>?, result: RemoteOperationResult<*>) {
super.onRemoteOperationFinish(operation, result)
if (operation is SynchronizeFileOperation) {
onSynchronizeFileOperationFinish(result)
}
}

private fun onSynchronizeFileOperationFinish(result: RemoteOperationResult<*>) {
if (result.isSuccess) {
invalidateOptionsMenu()
}
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
return when (item.itemId) {
android.R.id.home -> {
Expand Down Expand Up @@ -277,7 +261,7 @@ class PreviewImageActivity : FileActivity(),
val currentFile = previewImagePagerAdapter.getFileAt(position)
updateActionBarTitle(currentFile.fileName)
if (!previewImagePagerAdapter.pendingErrorAt(position)) {
fileOperationsHelper.syncFile(currentFile)
fileOperationsViewModel.performOperation(FileOperation.SynchronizeFileOperation(currentFile, account))
}

// Call to reset image zoom to initial state
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ interface LocalFileDataSource {
fun copyFile(sourceFile: OCFile, targetFile: OCFile, finalRemotePath: String, remoteId: String)
fun getFileById(fileId: Long): OCFile?
fun getFileByRemotePath(remotePath: String, owner: String): OCFile?
fun getFileByRemoteId(remoteId: String): OCFile?
fun getFolderContent(folderId: Long): List<OCFile>
fun getSearchFolderContent(folderId: Long, search: String): List<OCFile>
fun getSearchAvailableOfflineFolderContent(folderId: Long, search: String): List<OCFile>
Expand Down
Loading

0 comments on commit 22192f2

Please sign in to comment.