mirror of
https://github.com/rebelonion/Dantotsu.git
synced 2026-01-11 18:36:16 +00:00
181 lines
7.1 KiB
Kotlin
181 lines
7.1 KiB
Kotlin
package ani.dantotsu.aniyomi.data
|
|
|
|
import android.content.Context
|
|
import androidx.core.app.NotificationManagerCompat
|
|
import androidx.core.app.NotificationManagerCompat.IMPORTANCE_DEFAULT
|
|
import androidx.core.app.NotificationManagerCompat.IMPORTANCE_HIGH
|
|
import androidx.core.app.NotificationManagerCompat.IMPORTANCE_LOW
|
|
import ani.dantotsu.aniyomi.util.system.buildNotificationChannel
|
|
import ani.dantotsu.aniyomi.util.system.buildNotificationChannelGroup
|
|
|
|
/**
|
|
* Class to manage the basic information of all the notifications used in the app.
|
|
*/
|
|
object Notifications {
|
|
|
|
/**
|
|
* Common notification channel and ids used anywhere.
|
|
*/
|
|
const val CHANNEL_COMMON = "common_channel"
|
|
const val ID_DOWNLOAD_IMAGE = 2
|
|
|
|
/**
|
|
* Notification channel and ids used by the library updater.
|
|
*/
|
|
private const val GROUP_LIBRARY = "group_library"
|
|
const val CHANNEL_LIBRARY_PROGRESS = "library_progress_channel"
|
|
const val ID_LIBRARY_PROGRESS = -101
|
|
const val ID_LIBRARY_SIZE_WARNING = -103
|
|
const val CHANNEL_LIBRARY_ERROR = "library_errors_channel"
|
|
const val ID_LIBRARY_ERROR = -102
|
|
const val CHANNEL_LIBRARY_SKIPPED = "library_skipped_channel"
|
|
const val ID_LIBRARY_SKIPPED = -104
|
|
|
|
/**
|
|
* Notification channel and ids used by the downloader.
|
|
*/
|
|
private const val GROUP_DOWNLOADER = "group_downloader"
|
|
const val CHANNEL_DOWNLOADER_PROGRESS = "downloader_progress_channel"
|
|
const val ID_DOWNLOAD_CHAPTER_PROGRESS = -201
|
|
const val ID_DOWNLOAD_EPISODE_PROGRESS = -203
|
|
const val CHANNEL_DOWNLOADER_ERROR = "downloader_error_channel"
|
|
const val ID_DOWNLOAD_CHAPTER_ERROR = -202
|
|
const val ID_DOWNLOAD_EPISODE_ERROR = -204
|
|
|
|
/**
|
|
* Notification channel and ids used by the library updater.
|
|
*/
|
|
const val CHANNEL_NEW_CHAPTERS_EPISODES = "new_chapters_episodes_channel"
|
|
const val ID_NEW_CHAPTERS = -301
|
|
const val ID_NEW_EPISODES = -1301
|
|
const val GROUP_NEW_CHAPTERS = "eu.kanade.tachiyomi.NEW_CHAPTERS"
|
|
const val GROUP_NEW_EPISODES = "eu.kanade.tachiyomi.NEW_EPISODES"
|
|
|
|
/**
|
|
* Notification channel and ids used by the backup/restore system.
|
|
*/
|
|
private const val GROUP_BACKUP_RESTORE = "group_backup_restore"
|
|
const val CHANNEL_BACKUP_RESTORE_PROGRESS = "backup_restore_progress_channel"
|
|
const val ID_BACKUP_PROGRESS = -501
|
|
const val ID_RESTORE_PROGRESS = -503
|
|
const val CHANNEL_BACKUP_RESTORE_COMPLETE = "backup_restore_complete_channel_v2"
|
|
const val ID_BACKUP_COMPLETE = -502
|
|
const val ID_RESTORE_COMPLETE = -504
|
|
|
|
/**
|
|
* Notification channel used for Incognito Mode
|
|
*/
|
|
const val CHANNEL_INCOGNITO_MODE = "incognito_mode_channel"
|
|
const val ID_INCOGNITO_MODE = -701
|
|
|
|
/**
|
|
* Notification channel and ids used for app and extension updates.
|
|
*/
|
|
private const val GROUP_APK_UPDATES = "group_apk_updates"
|
|
const val CHANNEL_APP_UPDATE = "app_apk_update_channel"
|
|
const val ID_APP_UPDATER = 1
|
|
const val ID_APP_UPDATE_PROMPT = 2
|
|
const val CHANNEL_EXTENSIONS_UPDATE = "ext_apk_update_channel"
|
|
const val ID_UPDATES_TO_EXTS = -401
|
|
const val ID_EXTENSION_INSTALLER = -402
|
|
|
|
private val deprecatedChannels = listOf(
|
|
"downloader_channel",
|
|
"downloader_complete_channel",
|
|
"backup_restore_complete_channel",
|
|
"library_channel",
|
|
"library_progress_channel",
|
|
"updates_ext_channel",
|
|
"downloader_cache_renewal",
|
|
"crash_logs_channel",
|
|
)
|
|
|
|
/**
|
|
* Creates the notification channels introduced in Android Oreo.
|
|
* This won't do anything on Android versions that don't support notification channels.
|
|
*
|
|
* @param context The application context.
|
|
*/
|
|
fun createChannels(context: Context) {
|
|
val notificationManager = NotificationManagerCompat.from(context)
|
|
|
|
// Delete old notification channels
|
|
deprecatedChannels.forEach(notificationManager::deleteNotificationChannel)
|
|
|
|
notificationManager.createNotificationChannelGroupsCompat(
|
|
listOf(
|
|
buildNotificationChannelGroup(GROUP_BACKUP_RESTORE) {
|
|
setName("Backup & Restore")
|
|
},
|
|
buildNotificationChannelGroup(GROUP_DOWNLOADER) {
|
|
setName("Downloader")
|
|
},
|
|
buildNotificationChannelGroup(GROUP_LIBRARY) {
|
|
setName("Library")
|
|
},
|
|
buildNotificationChannelGroup(GROUP_APK_UPDATES) {
|
|
setName("App & Extension Updates")
|
|
},
|
|
),
|
|
)
|
|
|
|
notificationManager.createNotificationChannelsCompat(
|
|
listOf(
|
|
buildNotificationChannel(CHANNEL_COMMON, IMPORTANCE_LOW) {
|
|
setName("Common")
|
|
},
|
|
buildNotificationChannel(CHANNEL_LIBRARY_PROGRESS, IMPORTANCE_LOW) {
|
|
setName("Library Progress")
|
|
setGroup(GROUP_LIBRARY)
|
|
setShowBadge(false)
|
|
},
|
|
buildNotificationChannel(CHANNEL_LIBRARY_ERROR, IMPORTANCE_LOW) {
|
|
setName("Library Errors")
|
|
setGroup(GROUP_LIBRARY)
|
|
setShowBadge(false)
|
|
},
|
|
buildNotificationChannel(CHANNEL_LIBRARY_SKIPPED, IMPORTANCE_LOW) {
|
|
setName("Library Skipped")
|
|
setGroup(GROUP_LIBRARY)
|
|
setShowBadge(false)
|
|
},
|
|
buildNotificationChannel(CHANNEL_NEW_CHAPTERS_EPISODES, IMPORTANCE_DEFAULT) {
|
|
setName("New Chapters & Episodes")
|
|
},
|
|
buildNotificationChannel(CHANNEL_DOWNLOADER_PROGRESS, IMPORTANCE_LOW) {
|
|
setName("Downloader Progress")
|
|
setGroup(GROUP_DOWNLOADER)
|
|
setShowBadge(false)
|
|
},
|
|
buildNotificationChannel(CHANNEL_DOWNLOADER_ERROR, IMPORTANCE_LOW) {
|
|
setName("Downloader Errors")
|
|
setGroup(GROUP_DOWNLOADER)
|
|
setShowBadge(false)
|
|
},
|
|
buildNotificationChannel(CHANNEL_BACKUP_RESTORE_PROGRESS, IMPORTANCE_LOW) {
|
|
setName("Backup & Restore Progress")
|
|
setGroup(GROUP_BACKUP_RESTORE)
|
|
setShowBadge(false)
|
|
},
|
|
buildNotificationChannel(CHANNEL_BACKUP_RESTORE_COMPLETE, IMPORTANCE_HIGH) {
|
|
setName("Backup & Restore Complete")
|
|
setGroup(GROUP_BACKUP_RESTORE)
|
|
setShowBadge(false)
|
|
setSound(null, null)
|
|
},
|
|
buildNotificationChannel(CHANNEL_INCOGNITO_MODE, IMPORTANCE_LOW) {
|
|
setName("Incognito Mode")
|
|
},
|
|
buildNotificationChannel(CHANNEL_APP_UPDATE, IMPORTANCE_DEFAULT) {
|
|
setGroup(GROUP_APK_UPDATES)
|
|
setName("App Updates")
|
|
},
|
|
buildNotificationChannel(CHANNEL_EXTENSIONS_UPDATE, IMPORTANCE_DEFAULT) {
|
|
setGroup(GROUP_APK_UPDATES)
|
|
setName("Extension Updates")
|
|
},
|
|
),
|
|
)
|
|
}
|
|
}
|