mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +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