Quellcode durchsuchen

Improve notifications

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk vor 1 Jahr
Ursprung
Commit
861a39da8e

+ 12 - 18
app/src/main/java/com/nextcloud/client/jobs/upload/FileUploadWorker.kt

@@ -37,7 +37,6 @@ import com.nextcloud.client.network.ConnectivityService
 import com.nextcloud.java.util.Optional
 import com.nextcloud.model.WorkerState
 import com.nextcloud.model.WorkerStateLiveData
-import com.owncloud.android.R
 import com.owncloud.android.datamodel.FileDataStorageManager
 import com.owncloud.android.datamodel.ThumbnailsCacheManager
 import com.owncloud.android.datamodel.UploadsStorageManager
@@ -340,32 +339,27 @@ class FileUploadWorker(
             return
         }
 
-        val needsToUpdateCredentials = (uploadResult.code == ResultCode.UNAUTHORIZED)
         notificationManager.run {
-            val resultIntent = intents.resultIntent(ResultCode.OK, uploadFileOperation)
-            val credentialIntent: PendingIntent? = if (needsToUpdateCredentials) {
+            val credentialIntent: PendingIntent? = if (uploadResult.code == ResultCode.UNAUTHORIZED) {
                 intents.credentialIntent(uploadFileOperation)
             } else {
                 null
             }
 
-            val errorMessage = if (!uploadResult.isSuccess) {
-                ErrorMessageAdapter.getErrorCauseMessage(uploadResult, uploadFileOperation, context.resources)
+            if (uploadResult.isSuccess) {
+                val resultIntent = intents.resultIntent(ResultCode.OK, uploadFileOperation)
+                notifyForResult(uploadResult.code, resultIntent, credentialIntent)
+                showNotification()
             } else {
-                null
-            }
+                val errorMessage = ErrorMessageAdapter.getErrorCauseMessage(uploadResult, uploadFileOperation, context.resources)
 
-            notifyForResult(uploadResult.code, resultIntent, credentialIntent, errorMessage)
-
-            if (uploadResult.code == ResultCode.SYNC_CONFLICT) {
-                addAction(
-                    R.drawable.ic_cloud_upload,
-                    R.string.upload_list_resolve_conflict,
+                // FIXME SYNC_CONFLICT passes wrong OCFile, check ConflictsResolveActivity.createIntent usage
+                val conflictResolveIntent = if (uploadResult.code == ResultCode.SYNC_CONFLICT) {
                     intents.conflictResolveActionIntents(context, uploadFileOperation)
-                )
-            }
-
-            if (!uploadResult.isSuccess) {
+                } else {
+                    null
+                }
+                notifyForFailedResult(conflictResolveIntent, credentialIntent, errorMessage)
                 showNewNotification(uploadFileOperation)
             }
         }

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

@@ -32,6 +32,7 @@ import com.owncloud.android.R
 import com.owncloud.android.lib.common.operations.RemoteOperationResult
 import com.owncloud.android.lib.resources.files.FileUtils
 import com.owncloud.android.operations.UploadFileOperation
+import com.owncloud.android.ui.dialog.ConflictsResolveDialog
 import com.owncloud.android.ui.notifications.NotificationUtils
 import com.owncloud.android.utils.theme.ViewThemeUtils
 
@@ -95,8 +96,7 @@ class UploadNotificationManager(private val context: Context, private val viewTh
     fun notifyForResult(
         resultCode: RemoteOperationResult.ResultCode,
         resultIntent: PendingIntent,
-        credentialIntent: PendingIntent?,
-        errorMessage: String?
+        credentialIntent: PendingIntent?
     ) {
         val textId = resultText(resultCode)
 
@@ -112,10 +112,6 @@ class UploadNotificationManager(private val context: Context, private val viewTh
             credentialIntent?.let {
                 setContentIntent(it)
             }
-
-            errorMessage?.let {
-                setContentText(it)
-            }
         }
     }
 
@@ -131,6 +127,30 @@ class UploadNotificationManager(private val context: Context, private val viewTh
         }
     }
 
+    fun notifyForFailedResult(
+        conflictsResolveIntent: PendingIntent?,
+        credentialIntent: PendingIntent?,
+        errorMessage: String
+    ) {
+        notificationBuilder.run {
+            setProgress(0, 0, false)
+
+            conflictsResolveIntent?.let {
+                addAction(
+                    R.drawable.ic_cloud_upload,
+                    R.string.upload_list_resolve_conflict,
+                    it
+                )
+            }
+
+            credentialIntent?.let {
+                setContentIntent(it)
+            }
+
+            setContentText(errorMessage)
+        }
+    }
+
     fun addAction(icon: Int, textId: Int, intent: PendingIntent) {
         notificationBuilder.addAction(
             icon,

+ 1 - 1
app/src/main/java/com/owncloud/android/ui/activity/ConflictsResolveActivity.kt

@@ -191,7 +191,7 @@ class ConflictsResolveActivity : FileActivity(), OnConflictDecisionMadeListener
         if (prev != null) {
             fragmentTransaction.remove(prev)
         }
-        if (existingFile != null && storageManager.fileExists(newFile!!.remotePath)) {
+        if (existingFile != null && storageManager.fileExists(newFile?.remotePath)) {
             val dialog = ConflictsResolveDialog.newInstance(
                 existingFile,
                 newFile,