فهرست منبع

Add showNewNotification

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk 1 سال پیش
والد
کامیت
633bc1e22a

+ 11 - 1
app/src/main/java/com/nextcloud/client/files/downloader/DownloadNotificationManager.kt

@@ -37,6 +37,7 @@ import com.owncloud.android.operations.DownloadFileOperation
 import com.owncloud.android.ui.notifications.NotificationUtils
 import com.owncloud.android.utils.theme.ViewThemeUtils
 import java.io.File
+import java.security.SecureRandom
 
 @Suppress("TooManyFunctions")
 class DownloadNotificationManager(
@@ -120,7 +121,16 @@ class DownloadNotificationManager(
         }, 2000)
     }
 
-    fun updateNotificationText(text: String) {
+    fun showNewNotification(text: String) {
+        val notifyId = SecureRandom().nextInt()
+
+        notificationBuilder.run {
+            setContentText(text)
+            notificationManager.notify(notifyId, this.build())
+        }
+    }
+
+    private fun updateNotificationText(text: String) {
         notificationBuilder.run {
             setContentText(text)
             notificationManager.notify(id, this.build())

+ 12 - 15
app/src/main/java/com/nextcloud/client/files/downloader/FileDownloadWorker.kt

@@ -122,7 +122,6 @@ class FileDownloadWorker(
     private var fileDataStorageManager: FileDataStorageManager? = null
 
     private var folder: OCFile? = null
-    private var failedFileNames: ArrayList<String> = arrayListOf()
 
     @Suppress("TooGenericExceptionCaught")
     override fun doWork(): Result {
@@ -164,7 +163,6 @@ class FileDownloadWorker(
     }
 
     private fun setIdleWorkerState() {
-        failedFileNames.clear()
         pendingDownloads.all.clear()
         pendingDownloadFileIds.clear()
         currentDownload = null
@@ -181,14 +179,9 @@ class FileDownloadWorker(
         pendingDownloads.remove(accountName)
     }
 
+    @Suppress("MagicNumber")
     private fun showCompleteNotification() {
-        val result = if (failedFileNames.isEmpty()) {
-            getSuccessNotificationText()
-        } else {
-            val fileNames = failedFileNames.joinToString()
-            context.getString(R.string.downloader_files_download_failed, fileNames)
-        }
-
+        val result = getSuccessNotificationText()
         notificationManager.showCompleteNotification(result)
     }
 
@@ -377,7 +370,7 @@ class FileDownloadWorker(
 
     private fun cleanupDownloadProcess(result: RemoteOperationResult<*>?) {
         result?.let {
-            checkOperationFailures(it)
+            showFailedDownloadNotifications(it)
         }
 
         val removeResult = pendingDownloads.removePayload(
@@ -401,11 +394,15 @@ class FileDownloadWorker(
         }
     }
 
-    private fun checkOperationFailures(result: RemoteOperationResult<*>) {
+    private fun showFailedDownloadNotifications(result: RemoteOperationResult<*>) {
         if (!result.isSuccess) {
-            currentDownload?.file?.fileName?.let { fileName ->
-                failedFileNames.add(fileName)
-            }
+            val fileName = currentDownload?.file?.fileName ?: ""
+            notificationManager.showNewNotification(
+                context.getString(
+                    R.string.downloader_file_download_failed,
+                    fileName
+                )
+            )
         }
     }
 
@@ -422,7 +419,7 @@ class FileDownloadWorker(
             prepareForResult()
 
             if (needsToUpdateCredentials) {
-                updateNotificationText(context.getString(R.string.downloader_download_failed_credentials_error))
+                showNewNotification(context.getString(R.string.downloader_download_failed_credentials_error))
                 setContentIntent(
                     intents.credentialContentIntent(download.user),
                     PendingIntent.FLAG_ONE_SHOT or PendingIntent.FLAG_IMMUTABLE

+ 1 - 2
app/src/main/res/values/strings.xml

@@ -175,8 +175,7 @@
     <string name="downloader_download_failed_ticker">Download failed</string>
     <string name="downloader_download_failed_content">Could not download %1$s</string>
     <string name="downloader_not_downloaded_yet">Not downloaded yet</string>
-    <string name="downloader_files_download_failed">Error occurred while downloading %s files</string>
-    <string name="downloader_folder_download_failed">Error occurred while downloading %s folder</string>
+    <string name="downloader_file_download_failed">Error occurred while downloading %s file</string>
     <string name="downloader_folder_downloaded">%s folder successfully downloaded</string>
     <string name="downloader_file_downloaded">%s file successfully downloaded</string>
     <string name="downloader_unexpected_error">Unexpected error occurred while downloading files</string>