Handle download cancelation from icon properly (fixes #4241)

This commit is contained in:
arkon
2021-01-16 15:48:02 -05:00
parent 271489bdfd
commit f85194ec46
7 changed files with 35 additions and 17 deletions

View File

@@ -212,8 +212,19 @@ class DownloadManager(private val context: Context) {
fun deleteChapters(chapters: List<Chapter>, manga: Manga, source: Source): List<Chapter> {
val filteredChapters = getChaptersToDelete(chapters)
val wasRunning = downloader.isRunning
downloader.pause()
downloader.queue.remove(filteredChapters)
queue.remove(filteredChapters)
if (downloader.queue.isEmpty()) {
DownloadService.stop(context)
downloader.stop()
} else if (wasRunning && downloader.queue.isNotEmpty()) {
downloader.start()
}
val chapterDirs = provider.findChapterDirs(filteredChapters, manga, source)
chapterDirs.forEach { it.delete() }
cache.removeChapters(filteredChapters, manga)

View File

@@ -165,6 +165,8 @@ internal class DownloadNotifier(private val context: Context) {
* This function shows a notification to inform download tasks are done.
*/
fun onComplete() {
dismissProgress()
if (!errorThrown) {
// Create notification
with(completeNotificationBuilder) {

View File

@@ -134,15 +134,16 @@ class Downloader(
if (reason != null) {
notifier.onWarning(reason)
} else {
if (notifier.paused) {
notifier.paused = false
notifier.onPaused()
} else {
notifier.dismissProgress()
notifier.onComplete()
}
return
}
if (notifier.paused && !queue.isEmpty()) {
notifier.onPaused()
} else {
notifier.onComplete()
}
notifier.paused = false
}
/**