mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-30 22:07:57 +01:00 
			
		
		
		
	Move download warnings/errors to separate notification channel
This commit is contained in:
		| @@ -13,7 +13,6 @@ import eu.kanade.tachiyomi.util.lang.chop | ||||
| import eu.kanade.tachiyomi.util.system.notificationBuilder | ||||
| import eu.kanade.tachiyomi.util.system.notificationManager | ||||
| import java.util.regex.Pattern | ||||
| import uy.kohesive.injekt.api.get | ||||
| import uy.kohesive.injekt.injectLazy | ||||
|  | ||||
| /** | ||||
| @@ -25,12 +24,22 @@ internal class DownloadNotifier(private val context: Context) { | ||||
|  | ||||
|     private val preferences: PreferencesHelper by injectLazy() | ||||
|  | ||||
|     private val progressNotificationBuilder = context.notificationBuilder(Notifications.CHANNEL_DOWNLOADER_PROGRESS) { | ||||
|         setLargeIcon(BitmapFactory.decodeResource(context.resources, R.mipmap.ic_launcher)) | ||||
|     private val progressNotificationBuilder by lazy { | ||||
|         context.notificationBuilder(Notifications.CHANNEL_DOWNLOADER_PROGRESS) { | ||||
|             setLargeIcon(BitmapFactory.decodeResource(context.resources, R.mipmap.ic_launcher)) | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private val completeNotificationBuilder = context.notificationBuilder(Notifications.CHANNEL_DOWNLOADER_COMPLETE) { | ||||
|         setAutoCancel(false) | ||||
|     private val completeNotificationBuilder by lazy { | ||||
|         context.notificationBuilder(Notifications.CHANNEL_DOWNLOADER_COMPLETE) { | ||||
|             setAutoCancel(false) | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private val errorNotificationBuilder by lazy { | ||||
|         context.notificationBuilder(Notifications.CHANNEL_DOWNLOADER_ERROR) { | ||||
|             setAutoCancel(false) | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -53,7 +62,7 @@ internal class DownloadNotifier(private val context: Context) { | ||||
|      * | ||||
|      * @param id the id of the notification. | ||||
|      */ | ||||
|     private fun NotificationCompat.Builder.show(id: Int = Notifications.ID_DOWNLOAD_CHAPTER) { | ||||
|     private fun NotificationCompat.Builder.show(id: Int) { | ||||
|         context.notificationManager.notify(id, build()) | ||||
|     } | ||||
|  | ||||
| @@ -71,7 +80,7 @@ internal class DownloadNotifier(private val context: Context) { | ||||
|      * those can only be dismissed by the user. | ||||
|      */ | ||||
|     fun dismiss() { | ||||
|         context.notificationManager.cancel(Notifications.ID_DOWNLOAD_CHAPTER) | ||||
|         context.notificationManager.cancel(Notifications.ID_DOWNLOAD_CHAPTER_PROGRESS) | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -112,8 +121,9 @@ internal class DownloadNotifier(private val context: Context) { | ||||
|             } | ||||
|  | ||||
|             setProgress(download.pages!!.size, download.downloadedImages, false) | ||||
|  | ||||
|             show(Notifications.ID_DOWNLOAD_CHAPTER_PROGRESS) | ||||
|         } | ||||
|         progressNotificationBuilder.show() | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -141,8 +151,9 @@ internal class DownloadNotifier(private val context: Context) { | ||||
|                 context.getString(R.string.action_cancel_all), | ||||
|                 NotificationReceiver.clearDownloadsPendingBroadcast(context) | ||||
|             ) | ||||
|  | ||||
|             show(Notifications.ID_DOWNLOAD_CHAPTER_PROGRESS) | ||||
|         } | ||||
|         progressNotificationBuilder.show() | ||||
|  | ||||
|         // Reset initial values | ||||
|         isDownloading = false | ||||
| @@ -162,8 +173,9 @@ internal class DownloadNotifier(private val context: Context) { | ||||
|                 setAutoCancel(true) | ||||
|                 setContentIntent(NotificationHandler.openDownloadManagerPendingActivity(context)) | ||||
|                 setProgress(0, 0, false) | ||||
|  | ||||
|                 show(Notifications.ID_DOWNLOAD_CHAPTER_COMPLETE) | ||||
|             } | ||||
|             completeNotificationBuilder.show(Notifications.ID_DOWNLOAD_CHAPTER_COMPLETE) | ||||
|         } | ||||
|  | ||||
|         // Reset states to default | ||||
| @@ -177,7 +189,7 @@ internal class DownloadNotifier(private val context: Context) { | ||||
|      * @param reason the text to show. | ||||
|      */ | ||||
|     fun onWarning(reason: String) { | ||||
|         with(completeNotificationBuilder) { | ||||
|         with(errorNotificationBuilder) { | ||||
|             setContentTitle(context.getString(R.string.download_notifier_downloader_title)) | ||||
|             setContentText(reason) | ||||
|             setSmallIcon(android.R.drawable.stat_sys_warning) | ||||
| @@ -185,8 +197,9 @@ internal class DownloadNotifier(private val context: Context) { | ||||
|             clearActions() | ||||
|             setContentIntent(NotificationHandler.openDownloadManagerPendingActivity(context)) | ||||
|             setProgress(0, 0, false) | ||||
|  | ||||
|             show(Notifications.ID_DOWNLOAD_CHAPTER_ERROR) | ||||
|         } | ||||
|         completeNotificationBuilder.show() | ||||
|  | ||||
|         // Reset download information | ||||
|         isDownloading = false | ||||
| @@ -201,7 +214,7 @@ internal class DownloadNotifier(private val context: Context) { | ||||
|      */ | ||||
|     fun onError(error: String? = null, chapter: String? = null) { | ||||
|         // Create notification | ||||
|         with(completeNotificationBuilder) { | ||||
|         with(errorNotificationBuilder) { | ||||
|             setContentTitle( | ||||
|                 chapter | ||||
|                     ?: context.getString(R.string.download_notifier_downloader_title) | ||||
| @@ -212,8 +225,9 @@ internal class DownloadNotifier(private val context: Context) { | ||||
|             setAutoCancel(false) | ||||
|             setContentIntent(NotificationHandler.openDownloadManagerPendingActivity(context)) | ||||
|             setProgress(0, 0, false) | ||||
|  | ||||
|             show(Notifications.ID_DOWNLOAD_CHAPTER_ERROR) | ||||
|         } | ||||
|         completeNotificationBuilder.show(Notifications.ID_DOWNLOAD_CHAPTER_ERROR) | ||||
|  | ||||
|         // Reset download information | ||||
|         errorThrown = true | ||||
|   | ||||
| @@ -83,7 +83,7 @@ class DownloadService : Service() { | ||||
|      */ | ||||
|     override fun onCreate() { | ||||
|         super.onCreate() | ||||
|         startForeground(Notifications.ID_DOWNLOAD_CHAPTER, getPlaceholderNotification()) | ||||
|         startForeground(Notifications.ID_DOWNLOAD_CHAPTER_PROGRESS, getPlaceholderNotification()) | ||||
|         wakeLock = acquireWakeLock(javaClass.name) | ||||
|         runningRelay.call(true) | ||||
|         subscriptions = CompositeSubscription() | ||||
|   | ||||
| @@ -32,10 +32,11 @@ object Notifications { | ||||
|      */ | ||||
|     private const val GROUP_DOWNLOADER = "group_downloader" | ||||
|     const val CHANNEL_DOWNLOADER_PROGRESS = "downloader_progress_channel" | ||||
|     const val ID_DOWNLOAD_CHAPTER = -201 | ||||
|     const val ID_DOWNLOAD_CHAPTER_PROGRESS = -201 | ||||
|     const val CHANNEL_DOWNLOADER_COMPLETE = "downloader_complete_channel" | ||||
|     const val ID_DOWNLOAD_CHAPTER_ERROR = -202 | ||||
|     const val ID_DOWNLOAD_CHAPTER_COMPLETE = -203 | ||||
|     const val CHANNEL_DOWNLOADER_ERROR = "downloader_error_channel" | ||||
|     const val ID_DOWNLOAD_CHAPTER_ERROR = -202 | ||||
|  | ||||
|     /** | ||||
|      * Notification channel and ids used by the library updater. | ||||
| @@ -104,6 +105,13 @@ object Notifications { | ||||
|                 group = GROUP_DOWNLOADER | ||||
|                 setShowBadge(false) | ||||
|             }, | ||||
|             NotificationChannel( | ||||
|                 CHANNEL_DOWNLOADER_ERROR, context.getString(R.string.channel_errors), | ||||
|                 NotificationManager.IMPORTANCE_LOW | ||||
|             ).apply { | ||||
|                 group = GROUP_DOWNLOADER | ||||
|                 setShowBadge(false) | ||||
|             }, | ||||
|             NotificationChannel( | ||||
|                 CHANNEL_NEW_CHAPTERS, context.getString(R.string.channel_new_chapters), | ||||
|                 NotificationManager.IMPORTANCE_DEFAULT | ||||
|   | ||||
| @@ -678,6 +678,7 @@ | ||||
|     <string name="channel_common">Common</string> | ||||
|     <string name="channel_progress">Progress</string> | ||||
|     <string name="channel_complete">Complete</string> | ||||
|     <string name="channel_errors">Errors</string> | ||||
|     <string name="channel_library">Library</string> | ||||
|     <string name="group_downloader">Downloads</string> | ||||
|     <string name="group_backup_restore">Backup and restore</string> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user