Add ability to download unread chapters from library

This commit is contained in:
arkon
2020-07-04 10:54:01 -04:00
parent 963cf4c996
commit d9a12d79b0
6 changed files with 48 additions and 13 deletions
@@ -28,6 +28,7 @@ import eu.kanade.tachiyomi.data.library.LibraryUpdateService
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.preference.asImmediateFlow
import eu.kanade.tachiyomi.databinding.LibraryControllerBinding
import eu.kanade.tachiyomi.source.LocalSource
import eu.kanade.tachiyomi.ui.base.controller.NucleusController
import eu.kanade.tachiyomi.ui.base.controller.RootController
import eu.kanade.tachiyomi.ui.base.controller.TabbedController
@@ -441,6 +442,7 @@ class LibraryController(
mode.title = count.toString()
binding.actionToolbar.findItem(R.id.action_edit_cover)?.isVisible = count == 1
binding.actionToolbar.findItem(R.id.action_download_unread)?.isVisible = selectedMangas.any { it.source != LocalSource.ID }
}
return false
}
@@ -453,6 +455,7 @@ class LibraryController(
when (item.itemId) {
R.id.action_edit_cover -> handleChangeCover()
R.id.action_move_to_category -> showChangeMangaCategoriesDialog()
R.id.action_download_unread -> downloadUnreadChapters()
R.id.action_delete -> showDeleteMangaDialog()
R.id.action_select_all -> selectAllCategoryManga()
R.id.action_select_inverse -> selectInverseCategoryManga()
@@ -546,6 +549,12 @@ class LibraryController(
.showDialog(router)
}
private fun downloadUnreadChapters() {
val mangas = selectedMangas.toList()
presenter.downloadUnreadChapters(mangas)
destroyActionModeIfNeeded()
}
private fun showDeleteMangaDialog() {
DeleteLibraryMangasDialog(this, selectedMangas.toList()).showDialog(router)
}
@@ -313,6 +313,22 @@ class LibraryPresenter(
.reduce { set1: Iterable<Category>, set2 -> set1.intersect(set2).toMutableList() }
}
/**
* Queues all unread chapters from the given list of manga.
*
* @param mangas the list of manga.
*/
fun downloadUnreadChapters(mangas: List<Manga>) {
mangas.forEach { manga ->
launchIO {
val chapters = db.getChapters(manga).executeAsBlocking()
.filter { !it.read }
downloadManager.downloadChapters(manga, chapters)
}
}
}
/**
* Remove the selected manga from the library.
*