Эх сурвалжийг харах

Fix recursive worker start for folder

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk 1 жил өмнө
parent
commit
3b2824e80e

+ 0 - 5
app/src/main/java/com/nextcloud/client/files/downloader/FileDownloadHelper.kt

@@ -130,11 +130,6 @@ class FileDownloadHelper {
         }
     }
 
-    fun downloadFolder(folder: OCFile, user: User, files: List<OCFile>) {
-        val filesPath = files.map { it.remotePath }
-        backgroundJobManager.startFolderDownloadJob(folder, user, filesPath)
-    }
-
     fun downloadFile(user: User, file: OCFile) {
         downloadFile(user, file, downloadType = DownloadType.DOWNLOAD)
     }

+ 7 - 28
app/src/main/java/com/nextcloud/client/files/downloader/FileDownloadWorker.kt

@@ -80,10 +80,7 @@ class FileDownloadWorker(
         }
 
         const val WORKER_ID = "WORKER_ID"
-        const val FILES_SEPARATOR = ","
-        const val FOLDER_REMOTE_PATH = "FOLDER_REMOTE_PATH"
         const val FILE_REMOTE_PATH = "FILE_REMOTE_PATH"
-        const val FILES_REMOTE_PATH = "FILES_REMOTE_PATH"
         const val ACCOUNT_NAME = "ACCOUNT_NAME"
         const val BEHAVIOUR = "BEHAVIOUR"
         const val DOWNLOAD_TYPE = "DOWNLOAD_TYPE"
@@ -121,7 +118,6 @@ class FileDownloadWorker(
     private var fileDataStorageManager: FileDataStorageManager? = null
 
     private var workerId: Int? = null
-    private var folder: OCFile? = null
     private var isAnyOperationFailed = false
 
     @Suppress("TooGenericExceptionCaught")
@@ -193,9 +189,10 @@ class FileDownloadWorker(
 
     private fun getRequestDownloads(): AbstractList<String> {
         workerId = inputData.keyValueMap[WORKER_ID] as Int
+        Log_OC.e(TAG, "FilesDownloadWorker started for $workerId")
+
         isAnyOperationFailed = false
         setUser()
-        setFolder()
         val files = getFiles()
         val downloadType = getDownloadType()
 
@@ -246,33 +243,15 @@ class FileDownloadWorker(
         fileDataStorageManager = FileDataStorageManager(user, context.contentResolver)
     }
 
-    private fun setFolder() {
-        val folderPath = inputData.keyValueMap[FOLDER_REMOTE_PATH] as? String?
-        if (folderPath != null) {
-            folder = fileDataStorageManager?.getFileByEncryptedRemotePath(folderPath)
-        }
-    }
-
     private fun getFiles(): List<OCFile> {
-        val result = arrayListOf<OCFile>()
-
-        val filesPath = inputData.keyValueMap[FILES_REMOTE_PATH] as String?
-        val filesPathList = filesPath?.split(FILES_SEPARATOR)
+        val remotePath = inputData.keyValueMap[FILE_REMOTE_PATH] as String?
+        val file =  fileDataStorageManager?.getFileByEncryptedRemotePath(remotePath) ?: return listOf()
 
-        if (filesPathList != null) {
-            filesPathList.forEach {
-                fileDataStorageManager?.getFileByEncryptedRemotePath(it)?.let { file ->
-                    result.add(file)
-                }
-            }
+        return if (file.isFolder) {
+             fileDataStorageManager?.getAllFilesRecursivelyInsideFolder(file) ?: listOf()
         } else {
-            val remotePath = inputData.keyValueMap[FILE_REMOTE_PATH] as String
-            fileDataStorageManager?.getFileByEncryptedRemotePath(remotePath)?.let { file ->
-                result.add(file)
-            }
+            listOf(file)
         }
-
-        return result
     }
 
     private fun getDownloadType(): DownloadType? {

+ 0 - 6
app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManager.kt

@@ -160,12 +160,6 @@ interface BackgroundJobManager {
         conflictUploadId: Long?
     )
 
-    fun startFolderDownloadJob(
-        folder: OCFile,
-        user: User,
-        filesPath: List<String>
-    )
-
     fun startPdfGenerateAndUploadWork(user: User, uploadFolder: String, imagePaths: List<String>, pdfPath: String)
 
     fun scheduleTestJob()

+ 0 - 20
app/src/main/java/com/nextcloud/client/jobs/BackgroundJobManagerImpl.kt

@@ -517,26 +517,6 @@ internal class BackgroundJobManagerImpl(
         return workManager.isWorkScheduled(startFileDownloadJobTag(user, fileId))
     }
 
-    override fun startFolderDownloadJob(folder: OCFile, user: User, filesPath: List<String>) {
-        val data = workDataOf(
-            FileDownloadWorker.WORKER_ID to folder.fileId.toInt(),
-            FileDownloadWorker.ACCOUNT_NAME to user.accountName,
-            FileDownloadWorker.FOLDER_REMOTE_PATH to folder.remotePath,
-            FileDownloadWorker.FILES_REMOTE_PATH to filesPath.joinToString(FileDownloadWorker.FILES_SEPARATOR),
-            FileDownloadWorker.DOWNLOAD_TYPE to DownloadType.DOWNLOAD.toString()
-        )
-
-        val tag = startFileDownloadJobTag(user, folder.fileId)
-
-        val request = oneTimeRequestBuilder(FileDownloadWorker::class, JOB_FILES_DOWNLOAD, user)
-            .addTag(tag)
-            .setInputData(data)
-            .build()
-
-        workManager
-            .enqueueUniqueWork(tag, ExistingWorkPolicy.REPLACE, request)
-    }
-
     override fun startFileDownloadJob(
         user: User,
         file: OCFile,

+ 4 - 29
app/src/main/java/com/owncloud/android/operations/SynchronizeFolderOperation.java

@@ -376,19 +376,8 @@ public class SynchronizeFolderOperation extends SyncOperation {
         }
     }
 
-    private void classifyFileForLaterSyncOrDownload(OCFile remoteFile, OCFile localFile)
-            throws OperationCancelledException {
-        if (remoteFile.isFolder()) {
-            /// to download children files recursively
-            synchronized (mCancellationRequested) {
-                if (mCancellationRequested.get()) {
-                    throw new OperationCancelledException();
-                }
-                startSyncFolderOperation(remoteFile.getRemotePath());
-            }
-
-        } else {
-            /// prepare content synchronization for files (any file, not just favorites)
+    private void classifyFileForLaterSyncOrDownload(OCFile remoteFile, OCFile localFile) {
+        if (!remoteFile.isFolder()) {
             SynchronizeFileOperation operation = new SynchronizeFileOperation(
                 localFile,
                 remoteFile,
@@ -405,18 +394,7 @@ public class SynchronizeFolderOperation extends SyncOperation {
     private void prepareOpsFromLocalKnowledge() throws OperationCancelledException {
         List<OCFile> children = getStorageManager().getFolderContent(mLocalFolder, false);
         for (OCFile child : children) {
-            /// classify file to sync/download contents later
-            if (child.isFolder()) {
-                /// to download children files recursively
-                synchronized(mCancellationRequested) {
-                    if (mCancellationRequested.get()) {
-                        throw new OperationCancelledException();
-                    }
-                    startSyncFolderOperation(child.getRemotePath());
-                }
-
-            } else {
-                /// synchronization for regular files
+            if (!child.isFolder()) {
                 if (!child.isDown()) {
                     mFilesForDirectDownload.add(child);
 
@@ -433,7 +411,6 @@ public class SynchronizeFolderOperation extends SyncOperation {
                     mFilesToSyncContents.add(operation);
 
                 }
-
             }
         }
     }
@@ -445,9 +422,7 @@ public class SynchronizeFolderOperation extends SyncOperation {
 
 
     private void startDirectDownloads() {
-        FileDownloadHelper.Companion.instance().downloadFolder(mLocalFolder,
-                                                               user,
-                                                               mFilesForDirectDownload);
+        FileDownloadHelper.Companion.instance().downloadFile(user, mLocalFolder);
     }
 
     /**