From 506f675955e12015bd37ebf40b58e69cdea593be Mon Sep 17 00:00:00 2001 From: alperozturk Date: Wed, 11 Jun 2025 10:06:09 +0200 Subject: [PATCH] add createRichWorkspace Signed-off-by: alperozturk --- .../ui/fragment/OCFileListFragment.java | 23 ++++++++----------- .../filesRepository/FilesRepository.kt | 2 ++ .../filesRepository/RemoteFilesRepository.kt | 13 +++++++++++ 3 files changed, 25 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java b/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java index a5cbc17afc..aa1e9d6513 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -42,7 +42,6 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.floatingactionbutton.FloatingActionButton; import com.google.android.material.snackbar.Snackbar; import com.nextcloud.android.lib.resources.files.ToggleFileLockRemoteOperation; -import com.nextcloud.android.lib.richWorkspace.RichWorkspaceDirectEditingRemoteOperation; import com.nextcloud.client.account.User; import com.nextcloud.client.device.DeviceInfo; import com.nextcloud.client.di.Injectable; @@ -602,19 +601,17 @@ public class OCFileListFragment extends ExtendedListFragment implements @Override public void createRichWorkspace() { - new Thread(() -> { - RemoteOperationResult result = new RichWorkspaceDirectEditingRemoteOperation(mFile.getRemotePath()) - .execute(accountManager.getUser(), requireContext()); + if (!(getActivity() instanceof FileActivity fileActivity)) { + return; + } - if (result.isSuccess()) { - String url = (String) result.getSingleData(); - mContainerActivity.getFileOperationsHelper().openRichWorkspaceWithTextEditor(mFile, - url, - requireContext()); - } else { - DisplayUtils.showSnackMessage(getView(), R.string.failed_to_start_editor); - } - }).start(); + fileActivity.getFilesRepository().createRichWorkspace(mFile.getRemotePath(), url -> { + mContainerActivity.getFileOperationsHelper().openRichWorkspaceWithTextEditor(mFile, url, requireContext()); + return Unit.INSTANCE; + }, () -> { + DisplayUtils.showSnackMessage(getView(), R.string.failed_to_start_editor); + return Unit.INSTANCE; + }); } @Override diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/filesRepository/FilesRepository.kt b/app/src/main/java/com/owncloud/android/ui/fragment/filesRepository/FilesRepository.kt index 576fa50215..19ca9f98fd 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/filesRepository/FilesRepository.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/filesRepository/FilesRepository.kt @@ -21,4 +21,6 @@ interface FilesRepository { * */ fun fetchRecommendedFiles(onCompleted: (ArrayList) -> Unit) + + fun createRichWorkspace(remotePath: String, onCompleted: (String) -> Unit, onError: () -> Unit) } diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/filesRepository/RemoteFilesRepository.kt b/app/src/main/java/com/owncloud/android/ui/fragment/filesRepository/RemoteFilesRepository.kt index d44c54d63f..ae8609b537 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/filesRepository/RemoteFilesRepository.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/filesRepository/RemoteFilesRepository.kt @@ -11,6 +11,7 @@ import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.lifecycleScope import com.nextcloud.android.lib.resources.recommendations.GetRecommendationsRemoteOperation import com.nextcloud.android.lib.resources.recommendations.Recommendation +import com.nextcloud.android.lib.richWorkspace.RichWorkspaceDirectEditingRemoteOperation import com.nextcloud.repository.ClientRepository import com.owncloud.android.lib.common.utils.Log_OC import kotlinx.coroutines.Dispatchers @@ -45,4 +46,16 @@ class RemoteFilesRepository( } } } + + override fun createRichWorkspace(remotePath: String, onCompleted: (String) -> Unit, onError: () -> Unit) { + scope.launch(Dispatchers.IO) { + val client = clientRepository.getNextcloudClient() ?: return@launch + val url = RichWorkspaceDirectEditingRemoteOperation(remotePath) + .execute(client) + .takeIf { it.isSuccess } + ?.singleData as? String + + url?.let(onCompleted) ?: onError() + } + } }