Browse Source

Rebase master

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk 1 năm trước cách đây
mục cha
commit
8a18520b00

+ 5 - 23
app/src/main/java/com/nextcloud/client/jobs/FilesUploadWorker.kt

@@ -285,9 +285,10 @@ class FilesUploadWorker(
         const val ACCOUNT = "data_account"
         const val ACCOUNT = "data_account"
         var currentUploadFileOperation: UploadFileOperation? = null
         var currentUploadFileOperation: UploadFileOperation? = null
 
 
-        const val UPLOADS_ADDED_MESSAGE = "UPLOADS_ADDED"
-        const val UPLOAD_START_MESSAGE = "UPLOAD_START"
-        const val UPLOAD_FINISH_MESSAGE = "UPLOAD_FINISH"
+        private const val UPLOADS_ADDED_MESSAGE = "UPLOADS_ADDED"
+        private const val UPLOAD_START_MESSAGE = "UPLOAD_START"
+        private const val UPLOAD_FINISH_MESSAGE = "UPLOAD_FINISH"
+
         const val EXTRA_UPLOAD_RESULT = "RESULT"
         const val EXTRA_UPLOAD_RESULT = "RESULT"
         const val EXTRA_REMOTE_PATH = "REMOTE_PATH"
         const val EXTRA_REMOTE_PATH = "REMOTE_PATH"
         const val EXTRA_OLD_REMOTE_PATH = "OLD_REMOTE_PATH"
         const val EXTRA_OLD_REMOTE_PATH = "OLD_REMOTE_PATH"
@@ -297,21 +298,6 @@ class FilesUploadWorker(
         const val EXTRA_ACCOUNT_NAME = "ACCOUNT_NAME"
         const val EXTRA_ACCOUNT_NAME = "ACCOUNT_NAME"
         const val ACTION_CANCEL_BROADCAST = "CANCEL"
         const val ACTION_CANCEL_BROADCAST = "CANCEL"
         const val ACTION_PAUSE_BROADCAST = "PAUSE"
         const val ACTION_PAUSE_BROADCAST = "PAUSE"
-        const val KEY_FILE = "FILE"
-        const val KEY_LOCAL_FILE = "LOCAL_FILE"
-        const val KEY_REMOTE_FILE = "REMOTE_FILE"
-        const val KEY_MIME_TYPE = "MIME_TYPE"
-        const val KEY_RETRY = "KEY_RETRY"
-        const val KEY_RETRY_UPLOAD = "KEY_RETRY_UPLOAD"
-        const val KEY_ACCOUNT = "ACCOUNT"
-        const val KEY_USER = "USER"
-        const val KEY_NAME_COLLISION_POLICY = "KEY_NAME_COLLISION_POLICY"
-        const val KEY_CREATE_REMOTE_FOLDER = "CREATE_REMOTE_FOLDER"
-        const val KEY_CREATED_BY = "CREATED_BY"
-        const val KEY_WHILE_ON_WIFI_ONLY = "KEY_ON_WIFI_ONLY"
-        const val KEY_WHILE_CHARGING_ONLY = "KEY_WHILE_CHARGING_ONLY"
-        const val KEY_LOCAL_BEHAVIOUR = "BEHAVIOUR"
-        const val KEY_DISABLE_RETRIES = "DISABLE_RETRIES"
         const val LOCAL_BEHAVIOUR_COPY = 0
         const val LOCAL_BEHAVIOUR_COPY = 0
         const val LOCAL_BEHAVIOUR_MOVE = 1
         const val LOCAL_BEHAVIOUR_MOVE = 1
         const val LOCAL_BEHAVIOUR_FORGET = 2
         const val LOCAL_BEHAVIOUR_FORGET = 2
@@ -396,10 +382,6 @@ class FilesUploadWorker(
             return FilesUploadWorker::class.java.name + UPLOAD_FINISH_MESSAGE
             return FilesUploadWorker::class.java.name + UPLOAD_FINISH_MESSAGE
         }
         }
 
 
-        fun buildRemoteName(accountName: String, remotePath: String): String {
-            return accountName + remotePath
-        }
-
         @Suppress("EmptyIfBlock")
         @Suppress("EmptyIfBlock")
         class UploadNotificationActionReceiver : BroadcastReceiver() {
         class UploadNotificationActionReceiver : BroadcastReceiver() {
             override fun onReceive(context: Context, intent: Intent) {
             override fun onReceive(context: Context, intent: Intent) {
@@ -415,7 +397,7 @@ class FilesUploadWorker(
                         return
                         return
                     }
                     }
                     val uploadHelper = FilesUploadHelper()
                     val uploadHelper = FilesUploadHelper()
-                    uploadHelper.cancel(accountName, remotePath, null)
+                    uploadHelper.cancelFileUpload(remotePath, accountName)
                 } else if (ACTION_PAUSE_BROADCAST == action) {
                 } else if (ACTION_PAUSE_BROADCAST == action) {
                 } else {
                 } else {
                     Log_OC.d(TAG, "Unknown action to perform as UploadNotificationActionReceiver.")
                     Log_OC.d(TAG, "Unknown action to perform as UploadNotificationActionReceiver.")

+ 21 - 5
app/src/main/java/com/owncloud/android/ui/adapter/UploadListAdapter.java

@@ -129,7 +129,7 @@ public class UploadListAdapter extends SectionedRecyclerViewAdapter<SectionedVie
                     FilesUploadHelper uploadHelper = parentActivity.getFileUploaderHelper();
                     FilesUploadHelper uploadHelper = parentActivity.getFileUploaderHelper();
                     if (uploadHelper != null) {
                     if (uploadHelper != null) {
                         for (OCUpload upload : group.getItems()) {
                         for (OCUpload upload : group.getItems()) {
-                            uploadHelper.cancel(upload);
+                            uploadHelper.cancelFileUpload(upload.getRemotePath(), upload.getAccountName());
                         }
                         }
                     }
                     }
                 }
                 }
@@ -276,16 +276,32 @@ public class UploadListAdapter extends SectionedRecyclerViewAdapter<SectionedVie
                         // really uploading, so...
                         // really uploading, so...
                         // ... unbind the old progress bar, if any; ...
                         // ... unbind the old progress bar, if any; ...
                         if (progressListener != null) {
                         if (progressListener != null) {
-                            uploadHelper.removeDatatransferProgressListener(progressListener, progressListener.getUpload());
+                            OCUpload ocUpload = progressListener.getUpload();
+
+                            if (ocUpload == null) {
+                                return;
+                            }
+
+                            String targetKey = FilesUploadHelper.Companion.buildRemoteName(ocUpload.getAccountName(), ocUpload.getRemotePath());
+                            uploadHelper.removeUploadTransferProgressListener(progressListener, targetKey);
                         }
                         }
                         // ... then, bind the current progress bar to listen for updates
                         // ... then, bind the current progress bar to listen for updates
                         progressListener = new ProgressListener(item, itemViewHolder.binding.uploadProgressBar);
                         progressListener = new ProgressListener(item, itemViewHolder.binding.uploadProgressBar);
-                        uploadHelper.addDatatransferProgressListener(progressListener, item);
+                        String targetKey = FilesUploadHelper.Companion.buildRemoteName(item.getAccountName(), item.getRemotePath());
+                        uploadHelper.addUploadTransferProgressListener(progressListener, targetKey);
                     } else {
                     } else {
                         // not really uploading; stop listening progress if view is reused!
                         // not really uploading; stop listening progress if view is reused!
                         if (progressListener != null &&
                         if (progressListener != null &&
                             progressListener.isWrapping(itemViewHolder.binding.uploadProgressBar)) {
                             progressListener.isWrapping(itemViewHolder.binding.uploadProgressBar)) {
-                            uploadHelper.removeDatatransferProgressListener(progressListener, progressListener.getUpload());
+                            OCUpload ocUpload = progressListener.getUpload();
+
+                            if (ocUpload == null) {
+                                return;
+                            }
+
+                            String targetKey = FilesUploadHelper.Companion.buildRemoteName(ocUpload.getAccountName(), ocUpload.getRemotePath());
+
+                            uploadHelper.removeUploadTransferProgressListener(progressListener, targetKey);
                             progressListener = null;
                             progressListener = null;
                         }
                         }
                     }
                     }
@@ -309,7 +325,7 @@ public class UploadListAdapter extends SectionedRecyclerViewAdapter<SectionedVie
             itemViewHolder.binding.uploadRightButton.setOnClickListener(v -> {
             itemViewHolder.binding.uploadRightButton.setOnClickListener(v -> {
                 FilesUploadHelper uploadHelper = parentActivity.getFileUploaderHelper();
                 FilesUploadHelper uploadHelper = parentActivity.getFileUploaderHelper();
                 if (uploadHelper != null) {
                 if (uploadHelper != null) {
-                    uploadHelper.cancel(item);
+                    uploadHelper.cancelFileUpload(item.getRemotePath(), item.getAccountName());
                     loadUploadItemsFromDb();
                     loadUploadItemsFromDb();
                 }
                 }
             });
             });

+ 20 - 79
app/src/main/java/com/owncloud/android/utils/FilesUploadHelper.kt

@@ -22,7 +22,6 @@
 
 
 package com.owncloud.android.utils
 package com.owncloud.android.utils
 
 
-import android.accounts.Account
 import androidx.work.WorkInfo
 import androidx.work.WorkInfo
 import androidx.work.WorkManager
 import androidx.work.WorkManager
 import com.google.common.util.concurrent.ListenableFuture
 import com.google.common.util.concurrent.ListenableFuture
@@ -31,7 +30,6 @@ import com.nextcloud.client.account.UserAccountManager
 import com.nextcloud.client.jobs.BackgroundJobManager
 import com.nextcloud.client.jobs.BackgroundJobManager
 import com.nextcloud.client.jobs.BackgroundJobManagerImpl
 import com.nextcloud.client.jobs.BackgroundJobManagerImpl
 import com.nextcloud.client.jobs.FilesUploadWorker
 import com.nextcloud.client.jobs.FilesUploadWorker
-import com.nextcloud.client.jobs.FilesUploadWorker.Companion.buildRemoteName
 import com.nextcloud.client.jobs.FilesUploadWorker.Companion.currentUploadFileOperation
 import com.nextcloud.client.jobs.FilesUploadWorker.Companion.currentUploadFileOperation
 import com.owncloud.android.MainApp
 import com.owncloud.android.MainApp
 import com.owncloud.android.datamodel.OCFile
 import com.owncloud.android.datamodel.OCFile
@@ -40,9 +38,7 @@ import com.owncloud.android.datamodel.UploadsStorageManager.UploadStatus
 import com.owncloud.android.db.OCUpload
 import com.owncloud.android.db.OCUpload
 import com.owncloud.android.files.services.NameCollisionPolicy
 import com.owncloud.android.files.services.NameCollisionPolicy
 import com.owncloud.android.lib.common.network.OnDatatransferProgressListener
 import com.owncloud.android.lib.common.network.OnDatatransferProgressListener
-import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode
 import com.owncloud.android.lib.common.utils.Log_OC
 import com.owncloud.android.lib.common.utils.Log_OC
-import com.owncloud.android.lib.resources.files.model.ServerFileInterface
 import java.util.concurrent.ExecutionException
 import java.util.concurrent.ExecutionException
 import javax.inject.Inject
 import javax.inject.Inject
 
 
@@ -63,8 +59,13 @@ class FilesUploadHelper {
 
 
     companion object {
     companion object {
         private val TAG = FilesUploadWorker::class.java.simpleName
         private val TAG = FilesUploadWorker::class.java.simpleName
+
         val mBoundListeners = HashMap<String, OnDatatransferProgressListener>()
         val mBoundListeners = HashMap<String, OnDatatransferProgressListener>()
 
 
+        fun buildRemoteName(accountName: String, remotePath: String): String {
+            return accountName + remotePath
+        }
+
         fun onTransferProgress(
         fun onTransferProgress(
             accountName: String?,
             accountName: String?,
             remotePath: String?,
             remotePath: String?,
@@ -132,15 +133,21 @@ class FilesUploadHelper {
         backgroundJobManager.startFilesUploadJob(user)
         backgroundJobManager.startFilesUploadJob(user)
     }
     }
 
 
-    fun cancelFileUpload(remotePath: String, user: User) {
-        // need to update now table in mUploadsStorageManager,
-        // since the operation will not get to be run by FileUploader#uploadFile
-        uploadsStorageManager.removeUpload(user.accountName, remotePath)
+    fun cancelFileUpload(remotePath: String, accountName: String) {
+        try {
+            val user = accountManager.getUser(accountName).get()
+
+            // need to update now table in mUploadsStorageManager,
+            // since the operation will not get to be run by FileUploader#uploadFile
+            uploadsStorageManager.removeUpload(accountName, remotePath)
 
 
-        restartUploadJob(user)
+            restartUploadJob(user)
+        } catch (e: NoSuchElementException) {
+            Log_OC.e(TAG, "Error cancelling current upload because user does not exist!")
+        }
     }
     }
 
 
-    fun restartUploadJob(user: User) {
+    private fun restartUploadJob(user: User) {
         backgroundJobManager.cancelFilesUploadJob(user)
         backgroundJobManager.cancelFilesUploadJob(user)
         backgroundJobManager.startFilesUploadJob(user)
         backgroundJobManager.startFilesUploadJob(user)
     }
     }
@@ -208,85 +215,19 @@ class FilesUploadHelper {
         backgroundJobManager.startFilesUploadJob(user)
         backgroundJobManager.startFilesUploadJob(user)
     }
     }
 
 
-    fun cancel(storedUpload: OCUpload) {
-        cancel(storedUpload.accountName, storedUpload.remotePath, null)
-    }
-
-    fun cancel(account: Account, file: ServerFileInterface) {
-        cancel(account.name, file.remotePath, null)
-    }
-
     fun cancel(accountName: String?) {
     fun cancel(accountName: String?) {
         // cancelPendingUploads(accountName)
         // cancelPendingUploads(accountName)
-        FilesUploadHelper().restartUploadJob(accountManager.getUser(accountName).get())
-    }
-
-    fun cancel(user: User) {
-        cancel(user.accountName)
-    }
-
-    fun cancel(accountName: String?, remotePath: String?, resultCode: ResultCode?) {
-        try {
-            cancelFileUpload(remotePath!!, accountManager.getUser(accountName).get())
-        } catch (e: NoSuchElementException) {
-            Log_OC.e(TAG, "Error cancelling current upload because user does not exist!")
-        }
+        restartUploadJob(accountManager.getUser(accountName).get())
     }
     }
 
 
-    fun addDatatransferProgressListener(
-        listener: OnDatatransferProgressListener?,
-        ocUpload: OCUpload?
-    ) {
-        if (ocUpload == null || listener == null) {
-            return
-        }
-        val targetKey = buildRemoteName(ocUpload.accountName, ocUpload.remotePath)
-        addDatatransferProgressListener(listener, targetKey)
-    }
-
-    fun addDatatransferProgressListener(
-        listener: OnDatatransferProgressListener?,
-        user: User?,
-        file: ServerFileInterface?
-    ) {
-        if (user == null || file == null || listener == null) {
-            return
-        }
-        val targetKey = buildRemoteName(user.accountName, file.remotePath)
-        addDatatransferProgressListener(listener, targetKey)
-    }
-
-    fun addDatatransferProgressListener(
+    fun addUploadTransferProgressListener(
         listener: OnDatatransferProgressListener,
         listener: OnDatatransferProgressListener,
         targetKey: String
         targetKey: String
     ) {
     ) {
         mBoundListeners[targetKey] = listener
         mBoundListeners[targetKey] = listener
     }
     }
 
 
-    fun removeDatatransferProgressListener(
-        listener: OnDatatransferProgressListener?,
-        user: User?,
-        file: ServerFileInterface?
-    ) {
-        if (user == null || file == null || listener == null) {
-            return
-        }
-        val targetKey = buildRemoteName(user.accountName, file.remotePath)
-        removeDatatransferProgressListener(listener, targetKey)
-    }
-
-    fun removeDatatransferProgressListener(
-        listener: OnDatatransferProgressListener?,
-        ocUpload: OCUpload?
-    ) {
-        if (ocUpload == null || listener == null) {
-            return
-        }
-        val targetKey = buildRemoteName(ocUpload.accountName, ocUpload.remotePath)
-        removeDatatransferProgressListener(listener, targetKey)
-    }
-
-    fun removeDatatransferProgressListener(
+    fun removeUploadTransferProgressListener(
         listener: OnDatatransferProgressListener,
         listener: OnDatatransferProgressListener,
         targetKey: String
         targetKey: String
     ) {
     ) {