|
|
@ -102,6 +102,18 @@ class NotificationReceiver : BroadcastReceiver() {
|
|
|
|
markAsRead(urls, mangaId)
|
|
|
|
markAsRead(urls, mangaId)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Download manga chapters
|
|
|
|
|
|
|
|
ACTION_DOWNLOAD_CHAPTER -> {
|
|
|
|
|
|
|
|
val notificationId = intent.getIntExtra(EXTRA_NOTIFICATION_ID, -1)
|
|
|
|
|
|
|
|
if (notificationId > -1) {
|
|
|
|
|
|
|
|
dismissNotification(context, notificationId, intent.getIntExtra(EXTRA_GROUP_ID, 0))
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
val urls = intent.getStringArrayExtra(EXTRA_CHAPTER_URL) ?: return
|
|
|
|
|
|
|
|
val mangaId = intent.getLongExtra(EXTRA_MANGA_ID, -1)
|
|
|
|
|
|
|
|
if (mangaId > -1) {
|
|
|
|
|
|
|
|
downloadChapters(urls, mangaId)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
// Share crash dump file
|
|
|
|
// Share crash dump file
|
|
|
|
ACTION_SHARE_CRASH_LOG ->
|
|
|
|
ACTION_SHARE_CRASH_LOG ->
|
|
|
|
shareFile(
|
|
|
|
shareFile(
|
|
|
@ -235,6 +247,24 @@ class NotificationReceiver : BroadcastReceiver() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* Method called when user wants to download chapters
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param chapterUrls URLs of chapter to download
|
|
|
|
|
|
|
|
* @param mangaId id of manga
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private fun downloadChapters(chapterUrls: Array<String>, mangaId: Long) {
|
|
|
|
|
|
|
|
val db: DatabaseHelper = Injekt.get()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
launchIO {
|
|
|
|
|
|
|
|
val chapters = chapterUrls.mapNotNull { db.getChapter(it, mangaId).executeAsBlocking() }
|
|
|
|
|
|
|
|
val manga = db.getManga(mangaId).executeAsBlocking()
|
|
|
|
|
|
|
|
if (chapters.isNotEmpty() && manga != null) {
|
|
|
|
|
|
|
|
downloadManager.downloadChapters(manga, chapters)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
companion object {
|
|
|
|
companion object {
|
|
|
|
private const val NAME = "NotificationReceiver"
|
|
|
|
private const val NAME = "NotificationReceiver"
|
|
|
|
|
|
|
|
|
|
|
@ -251,6 +281,7 @@ class NotificationReceiver : BroadcastReceiver() {
|
|
|
|
|
|
|
|
|
|
|
|
private const val ACTION_MARK_AS_READ = "$ID.$NAME.MARK_AS_READ"
|
|
|
|
private const val ACTION_MARK_AS_READ = "$ID.$NAME.MARK_AS_READ"
|
|
|
|
private const val ACTION_OPEN_CHAPTER = "$ID.$NAME.ACTION_OPEN_CHAPTER"
|
|
|
|
private const val ACTION_OPEN_CHAPTER = "$ID.$NAME.ACTION_OPEN_CHAPTER"
|
|
|
|
|
|
|
|
private const val ACTION_DOWNLOAD_CHAPTER = "$ID.$NAME.ACTION_DOWNLOAD_CHAPTER"
|
|
|
|
|
|
|
|
|
|
|
|
private const val ACTION_RESUME_DOWNLOADS = "$ID.$NAME.ACTION_RESUME_DOWNLOADS"
|
|
|
|
private const val ACTION_RESUME_DOWNLOADS = "$ID.$NAME.ACTION_RESUME_DOWNLOADS"
|
|
|
|
private const val ACTION_PAUSE_DOWNLOADS = "$ID.$NAME.ACTION_PAUSE_DOWNLOADS"
|
|
|
|
private const val ACTION_PAUSE_DOWNLOADS = "$ID.$NAME.ACTION_PAUSE_DOWNLOADS"
|
|
|
@ -442,6 +473,28 @@ class NotificationReceiver : BroadcastReceiver() {
|
|
|
|
return PendingIntent.getBroadcast(context, manga.id.hashCode(), newIntent, PendingIntent.FLAG_UPDATE_CURRENT)
|
|
|
|
return PendingIntent.getBroadcast(context, manga.id.hashCode(), newIntent, PendingIntent.FLAG_UPDATE_CURRENT)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* Returns [PendingIntent] that downloads chapters
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param context context of application
|
|
|
|
|
|
|
|
* @param manga manga of chapter
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
internal fun downloadChaptersPendingBroadcast(
|
|
|
|
|
|
|
|
context: Context,
|
|
|
|
|
|
|
|
manga: Manga,
|
|
|
|
|
|
|
|
chapters: Array<Chapter>,
|
|
|
|
|
|
|
|
groupId: Int
|
|
|
|
|
|
|
|
): PendingIntent {
|
|
|
|
|
|
|
|
val newIntent = Intent(context, NotificationReceiver::class.java).apply {
|
|
|
|
|
|
|
|
action = ACTION_DOWNLOAD_CHAPTER
|
|
|
|
|
|
|
|
putExtra(EXTRA_CHAPTER_URL, chapters.map { it.url }.toTypedArray())
|
|
|
|
|
|
|
|
putExtra(EXTRA_MANGA_ID, manga.id)
|
|
|
|
|
|
|
|
putExtra(EXTRA_NOTIFICATION_ID, manga.id.hashCode())
|
|
|
|
|
|
|
|
putExtra(EXTRA_GROUP_ID, groupId)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return PendingIntent.getBroadcast(context, manga.id.hashCode(), newIntent, PendingIntent.FLAG_UPDATE_CURRENT)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Returns [PendingIntent] that starts a service which stops the library update
|
|
|
|
* Returns [PendingIntent] that starts a service which stops the library update
|
|
|
|
*
|
|
|
|
*
|
|
|
|