mirror of
https://github.com/tachiyomiorg/tachiyomi.git
synced 2024-12-22 02:41:52 +01:00
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:
parent
d60367768b
commit
ba2a528886
@ -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>) {
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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 })
|
||||
}
|
||||
|
||||
|
@ -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))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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 })
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user