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

(cherry picked from commit 11ab3b2c2e906e51cd27c57cc7a7ed2deb188867)
This commit is contained in:
Andreas E 2020-10-03 18:29:51 +02:00 committed by Jobobby04
parent f6d3c38d03
commit 527e26137f
2 changed files with 22 additions and 0 deletions

View File

@ -173,6 +173,17 @@ class DownloadManager(/* SY private */ val context: Context) {
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.
*

View File

@ -417,6 +417,7 @@ class ReaderPresenter(
// SY <--
updateTrackChapterRead(selectedChapter)
deleteChapterIfNeeded(selectedChapter)
deleteChapterFromDownloadQueue(currentChapters.currChapter)
}
if (selectedChapter != currentChapters.currChapter) {
@ -431,6 +432,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.
* If both conditions are satisfied enqueues chapter for delete