Fix related to cancelling queued chapters (#8528)

Tachi removes the downloaded chapter (if it exists) when you just cancelled a download from queue.

PR fixes that

Also removes redundant return
This commit is contained in:
AntsyLich 2022-11-19 09:27:39 +06:00 committed by GitHub
parent d60367768b
commit ba2a528886
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 11 additions and 35 deletions

View file

@ -214,22 +214,9 @@ class DownloadManager(
return cache.getDownloadCount(manga)
}
/**
* Calls delete chapter, which deletes a temp download.
*
* @param download the download to cancel.
*/
fun deletePendingDownload(download: Download) {
deleteChapters(listOf(download.chapter.toDomainChapter()!!), download.manga, download.source, true)
}
fun deletePendingDownloads(vararg downloads: Download) {
val downloadsByManga = downloads.groupBy { it.manga.id }
downloadsByManga.map { entry ->
val manga = entry.value.first().manga
val source = entry.value.first().source
deleteChapters(entry.value.map { it.chapter.toDomainChapter()!! }, manga, source, true)
}
fun deletePendingDownloads(downloads: List<Download>) {
val domainChapters = downloads.map { it.chapter.toDomainChapter()!! }
removeFromDownloadQueue(domainChapters)
}
/**
@ -238,14 +225,9 @@ class DownloadManager(
* @param chapters the list of chapters to delete.
* @param manga the manga of the chapters.
* @param source the source of the chapters.
* @param isCancelling true if it's simply cancelling a download
*/
fun deleteChapters(chapters: List<Chapter>, manga: Manga, source: Source, isCancelling: Boolean = false): List<Chapter> {
val filteredChapters = if (isCancelling) {
chapters
} else {
getChaptersToDelete(chapters, manga)
}
fun deleteChapters(chapters: List<Chapter>, manga: Manga, source: Source) {
val filteredChapters = getChaptersToDelete(chapters, manga)
if (filteredChapters.isNotEmpty()) {
launchIO {
@ -269,8 +251,6 @@ class DownloadManager(
}
}
}
return filteredChapters
}
private fun removeFromDownloadQueue(chapters: List<Chapter>) {

View file

@ -479,7 +479,7 @@ class DownloadController :
presenter.reorder(selectedSeries + otherSeries)
}
R.id.cancel_download -> {
presenter.cancelDownload(item.download)
presenter.cancelDownloads(listOf(item.download))
}
R.id.cancel_series -> {
val allDownloadsForSeries = adapter?.currentItems

View file

@ -72,11 +72,7 @@ class DownloadPresenter : BasePresenter<DownloadController>() {
downloadManager.reorderQueue(downloads)
}
fun cancelDownload(download: Download) {
downloadManager.deletePendingDownload(download)
}
fun cancelDownloads(downloads: List<Download>) {
downloadManager.deletePendingDownloads(*downloads.toTypedArray())
downloadManager.deletePendingDownloads(downloads)
}
}

View file

@ -658,7 +658,7 @@ class MangaInfoScreenModel(
fun cancelDownload(chapterId: Long) {
val activeDownload = downloadManager.queue.find { chapterId == it.chapter.id } ?: return
downloadManager.deletePendingDownload(activeDownload)
downloadManager.deletePendingDownloads(listOf(activeDownload))
updateDownloadState(activeDownload.apply { status = Download.State.NOT_DOWNLOADED })
}

View file

@ -490,8 +490,8 @@ class ReaderPresenter(
* if setting is enabled and [currentChapter] is queued for download
*/
private fun deleteChapterFromDownloadQueue(currentChapter: ReaderChapter): Download? {
return downloadManager.getChapterDownloadOrNull(currentChapter.chapter.toDomainChapter()!!)?.apply {
downloadManager.deletePendingDownload(this)
return downloadManager.getChapterDownloadOrNull(currentChapter.chapter.toDomainChapter()!!)?.also {
downloadManager.deletePendingDownloads(listOf(it))
}
}

View file

@ -199,7 +199,7 @@ class UpdatesPresenter(
private fun cancelDownload(chapterId: Long) {
val activeDownload = downloadManager.queue.find { chapterId == it.chapter.id } ?: return
downloadManager.deletePendingDownload(activeDownload)
downloadManager.deletePendingDownloads(listOf(activeDownload))
updateDownloadState(activeDownload.apply { status = Download.State.NOT_DOWNLOADED })
}