فهرست منبع

Merge pull request #13580 from nextcloud/show-new-notification-for-only-file-specific-errors

Show New Notifications Only For File Specific Errors
Alper Öztürk 7 ماه پیش
والد
کامیت
9317863f70

+ 6 - 1
app/src/main/java/com/nextcloud/client/jobs/upload/UploadNotificationManager.kt

@@ -10,6 +10,7 @@ package com.nextcloud.client.jobs.upload
 import android.app.PendingIntent
 import android.content.Context
 import com.nextcloud.client.jobs.notification.WorkerNotificationManager
+import com.nextcloud.utils.extensions.isFileSpecificError
 import com.owncloud.android.R
 import com.owncloud.android.lib.common.operations.RemoteOperationResult
 import com.owncloud.android.operations.UploadFileOperation
@@ -107,7 +108,11 @@ class UploadNotificationManager(private val context: Context, viewThemeUtils: Vi
             setContentText(errorMessage)
         }
 
-        showNewNotification(uploadFileOperation)
+        if (resultCode.isFileSpecificError()) {
+            showNewNotification(uploadFileOperation)
+        } else {
+            showNotification()
+        }
     }
 
     private fun getFailedResultTitleId(resultCode: RemoteOperationResult.ResultCode): Int {

+ 23 - 0
app/src/main/java/com/nextcloud/utils/extensions/RemoteOperationResultExtensions.kt

@@ -14,6 +14,7 @@ import com.owncloud.android.datamodel.FileDataStorageManager
 import com.owncloud.android.datamodel.OCFile
 import com.owncloud.android.lib.common.operations.RemoteOperation
 import com.owncloud.android.lib.common.operations.RemoteOperationResult
+import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode
 import com.owncloud.android.lib.resources.files.model.RemoteFile
 import com.owncloud.android.utils.ErrorMessageAdapter
 import com.owncloud.android.utils.FileStorageUtils
@@ -46,6 +47,28 @@ fun RemoteOperationResult<*>?.getConflictedRemoteIdsWithOfflineOperations(
     return result.ifEmpty { null }
 }
 
+fun ResultCode.isFileSpecificError(): Boolean {
+    val errorCodes = listOf(
+        ResultCode.INSTANCE_NOT_CONFIGURED,
+        ResultCode.QUOTA_EXCEEDED,
+        ResultCode.LOCAL_STORAGE_FULL,
+        ResultCode.WRONG_CONNECTION,
+        ResultCode.UNAUTHORIZED,
+        ResultCode.OK_NO_SSL,
+        ResultCode.MAINTENANCE_MODE,
+        ResultCode.UNTRUSTED_DOMAIN,
+        ResultCode.ACCOUNT_NOT_THE_SAME,
+        ResultCode.ACCOUNT_EXCEPTION,
+        ResultCode.ACCOUNT_NOT_NEW,
+        ResultCode.ACCOUNT_NOT_FOUND,
+        ResultCode.ACCOUNT_USES_STANDARD_PASSWORD,
+        ResultCode.INCORRECT_ADDRESS,
+        ResultCode.BAD_OC_VERSION
+    )
+
+    return !errorCodes.contains(this)
+}
+
 @Suppress("Deprecation")
 fun RemoteOperationResult<*>?.toOCFile(): List<OCFile>? {
     return if (this?.isSuccess == true) {