Remove from queue after read (#3870)

* Add option to remove chapter from download queue after marked as read

* Begone bug

There was a bug when one queued a new download to the downloader. Which resulted in getChapterDownloadOrNull() would not find the corresponding download for the provided chapter

* Fix review comment

* Remove preference and just remove from queue
This commit is contained in:
Andreas E 2020-10-03 18:29:51 +02:00 committed by GitHub
parent 812368e332
commit 11ab3b2c2e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 0 deletions

View file

@ -173,6 +173,17 @@ class DownloadManager(private val context: Context) {
return cache.isChapterDownloaded(chapter, manga, skipCache) return cache.isChapterDownloaded(chapter, manga, skipCache)
} }
/**
* Returns the download from queue if the chapter is queued for download
* else it will return null which means that the chapter is not queued for download
*
* @param chapter the chapter to check.
*/
fun getChapterDownloadOrNull(chapter: Chapter): Download? {
return downloader.queue
.firstOrNull { it.chapter.id == chapter.id && it.chapter.manga_id == chapter.manga_id }
}
/** /**
* Returns the amount of downloaded chapters for a manga. * Returns the amount of downloaded chapters for a manga.
* *

View file

@ -361,6 +361,7 @@ class ReaderPresenter(
selectedChapter.chapter.read = true selectedChapter.chapter.read = true
updateTrackChapterRead(selectedChapter) updateTrackChapterRead(selectedChapter)
deleteChapterIfNeeded(selectedChapter) deleteChapterIfNeeded(selectedChapter)
deleteChapterFromDownloadQueue(currentChapters.currChapter)
} }
if (selectedChapter != currentChapters.currChapter) { if (selectedChapter != currentChapters.currChapter) {
@ -370,6 +371,16 @@ class ReaderPresenter(
} }
} }
/**
* Removes [currentChapter] from download queue
* if setting is enabled and [currentChapter] is queued for download
*/
private fun deleteChapterFromDownloadQueue(currentChapter: ReaderChapter) {
downloadManager.getChapterDownloadOrNull(currentChapter.chapter)?.let { download ->
downloadManager.deletePendingDownload(download)
}
}
/** /**
* Determines if deleting option is enabled and nth to last chapter actually exists. * Determines if deleting option is enabled and nth to last chapter actually exists.
* If both conditions are satisfied enqueues chapter for delete * If both conditions are satisfied enqueues chapter for delete