mirror of
https://github.com/mihonapp/mihon.git
synced 2025-11-14 21:18:56 +01:00
More domain model usage
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
package eu.kanade.tachiyomi.ui.library
|
||||
|
||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||
import eu.kanade.domain.manga.model.Manga
|
||||
|
||||
/**
|
||||
* Adapter storing a list of manga in a certain category.
|
||||
|
||||
@@ -9,8 +9,9 @@ import dev.chrisbanes.insetter.applyInsetter
|
||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||
import eu.davidea.flexibleadapter.SelectableAdapter
|
||||
import eu.kanade.domain.category.model.Category
|
||||
import eu.kanade.domain.manga.model.Manga
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||
import eu.kanade.tachiyomi.data.database.models.toDomainManga
|
||||
import eu.kanade.tachiyomi.data.library.LibraryUpdateService
|
||||
import eu.kanade.tachiyomi.databinding.LibraryCategoryBinding
|
||||
import eu.kanade.tachiyomi.ui.main.MainActivity
|
||||
@@ -143,7 +144,7 @@ class LibraryCategoryView @JvmOverloads constructor(context: Context, attrs: Att
|
||||
.filter { it == category.id }
|
||||
.subscribe {
|
||||
adapter.currentItems.forEach { item ->
|
||||
controller.setSelection(item.manga, true)
|
||||
controller.setSelection(item.manga.toDomainManga()!!, true)
|
||||
}
|
||||
controller.invalidateActionMode()
|
||||
}
|
||||
@@ -152,7 +153,7 @@ class LibraryCategoryView @JvmOverloads constructor(context: Context, attrs: Att
|
||||
.filter { it == category.id }
|
||||
.subscribe {
|
||||
adapter.currentItems.forEach { item ->
|
||||
controller.toggleSelection(item.manga)
|
||||
controller.toggleSelection(item.manga.toDomainManga()!!)
|
||||
}
|
||||
controller.invalidateActionMode()
|
||||
}
|
||||
@@ -191,7 +192,7 @@ class LibraryCategoryView @JvmOverloads constructor(context: Context, attrs: Att
|
||||
val position = adapter.indexOf(manga)
|
||||
if (position != -1 && !adapter.isSelected(position)) {
|
||||
adapter.toggleSelection(position)
|
||||
(recycler.findViewHolderForItemId(manga.id!!) as? LibraryHolder<*>)?.toggleActivation()
|
||||
(recycler.findViewHolderForItemId(manga.id) as? LibraryHolder<*>)?.toggleActivation()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -241,7 +242,7 @@ class LibraryCategoryView @JvmOverloads constructor(context: Context, attrs: Att
|
||||
val position = adapter.indexOf(manga)
|
||||
if (position != -1) {
|
||||
adapter.toggleSelection(position)
|
||||
(recycler.findViewHolderForItemId(manga.id!!) as? LibraryHolder<*>)?.toggleActivation()
|
||||
(recycler.findViewHolderForItemId(manga.id) as? LibraryHolder<*>)?.toggleActivation()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -263,7 +264,7 @@ class LibraryCategoryView @JvmOverloads constructor(context: Context, attrs: Att
|
||||
toggleSelection(position)
|
||||
true
|
||||
} else {
|
||||
openManga(item.manga)
|
||||
openManga(item.manga.toDomainManga()!!)
|
||||
false
|
||||
}
|
||||
}
|
||||
@@ -309,7 +310,7 @@ class LibraryCategoryView @JvmOverloads constructor(context: Context, attrs: Att
|
||||
private fun toggleSelection(position: Int) {
|
||||
val item = adapter.getItem(position) ?: return
|
||||
|
||||
controller.setSelection(item.manga, !adapter.isSelected(position))
|
||||
controller.setSelection(item.manga.toDomainManga()!!, !adapter.isSelected(position))
|
||||
controller.invalidateActionMode()
|
||||
}
|
||||
|
||||
@@ -321,7 +322,7 @@ class LibraryCategoryView @JvmOverloads constructor(context: Context, attrs: Att
|
||||
private fun setSelection(position: Int) {
|
||||
val item = adapter.getItem(position) ?: return
|
||||
|
||||
controller.setSelection(item.manga, true)
|
||||
controller.setSelection(item.manga.toDomainManga()!!, true)
|
||||
controller.invalidateActionMode()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,6 @@ import eu.kanade.domain.category.model.toDbCategory
|
||||
import eu.kanade.domain.manga.model.Manga
|
||||
import eu.kanade.domain.manga.model.toDbManga
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.database.models.toDomainManga
|
||||
import eu.kanade.tachiyomi.data.library.LibraryUpdateService
|
||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||
import eu.kanade.tachiyomi.databinding.LibraryControllerBinding
|
||||
@@ -53,7 +52,6 @@ import rx.android.schedulers.AndroidSchedulers
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import java.util.concurrent.TimeUnit
|
||||
import eu.kanade.tachiyomi.data.database.models.Manga as DbManga
|
||||
|
||||
class LibraryController(
|
||||
bundle: Bundle? = null,
|
||||
@@ -78,7 +76,7 @@ class LibraryController(
|
||||
/**
|
||||
* Currently selected mangas.
|
||||
*/
|
||||
val selectedMangas = mutableSetOf<DbManga>()
|
||||
val selectedMangas = mutableSetOf<Manga>()
|
||||
|
||||
/**
|
||||
* Relay to notify the UI of selection updates.
|
||||
@@ -490,18 +488,18 @@ class LibraryController(
|
||||
override fun onDestroyActionMode(mode: ActionMode) {
|
||||
// Clear all the manga selections and notify child views.
|
||||
selectedMangas.clear()
|
||||
selectionRelay.call(LibrarySelectionEvent.Cleared())
|
||||
selectionRelay.call(LibrarySelectionEvent.Cleared)
|
||||
|
||||
(activity as? MainActivity)?.showBottomNav(true)
|
||||
|
||||
actionMode = null
|
||||
}
|
||||
|
||||
fun openManga(manga: DbManga) {
|
||||
fun openManga(manga: Manga) {
|
||||
// Notify the presenter a manga is being opened.
|
||||
presenter.onOpenManga()
|
||||
|
||||
router.pushController(MangaController(manga.id!!))
|
||||
router.pushController(MangaController(manga.id))
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -510,7 +508,7 @@ class LibraryController(
|
||||
* @param manga the manga whose selection has changed.
|
||||
* @param selected whether it's now selected or not.
|
||||
*/
|
||||
fun setSelection(manga: DbManga, selected: Boolean) {
|
||||
fun setSelection(manga: Manga, selected: Boolean) {
|
||||
if (selected) {
|
||||
if (selectedMangas.add(manga)) {
|
||||
selectionRelay.call(LibrarySelectionEvent.Selected(manga))
|
||||
@@ -527,7 +525,7 @@ class LibraryController(
|
||||
*
|
||||
* @param manga the manga whose selection to change.
|
||||
*/
|
||||
fun toggleSelection(manga: DbManga) {
|
||||
fun toggleSelection(manga: Manga) {
|
||||
if (selectedMangas.add(manga)) {
|
||||
selectionRelay.call(LibrarySelectionEvent.Selected(manga))
|
||||
} else if (selectedMangas.remove(manga)) {
|
||||
@@ -541,7 +539,7 @@ class LibraryController(
|
||||
*/
|
||||
fun clearSelection() {
|
||||
selectedMangas.clear()
|
||||
selectionRelay.call(LibrarySelectionEvent.Cleared())
|
||||
selectionRelay.call(LibrarySelectionEvent.Cleared)
|
||||
invalidateActionMode()
|
||||
}
|
||||
|
||||
@@ -568,7 +566,7 @@ class LibraryController(
|
||||
}
|
||||
}.toTypedArray()
|
||||
launchUI {
|
||||
ChangeMangaCategoriesDialog(this@LibraryController, mangas.map { it.toDomainManga()!! }, categories, preselected)
|
||||
ChangeMangaCategoriesDialog(this@LibraryController, mangas, categories, preselected)
|
||||
.showDialog(router)
|
||||
}
|
||||
}
|
||||
@@ -587,7 +585,7 @@ class LibraryController(
|
||||
}
|
||||
|
||||
private fun showDeleteMangaDialog() {
|
||||
DeleteLibraryMangasDialog(this, selectedMangas.toList().map { it.toDomainManga()!! }).showDialog(router)
|
||||
DeleteLibraryMangasDialog(this, selectedMangas.toList()).showDialog(router)
|
||||
}
|
||||
|
||||
override fun updateCategoriesForMangas(mangas: List<Manga>, addCategories: List<Category>, removeCategories: List<Category>) {
|
||||
|
||||
@@ -16,6 +16,7 @@ import eu.kanade.domain.manga.interactor.UpdateManga
|
||||
import eu.kanade.domain.manga.model.Manga
|
||||
import eu.kanade.domain.manga.model.MangaUpdate
|
||||
import eu.kanade.domain.manga.model.isLocal
|
||||
import eu.kanade.domain.manga.model.toDbManga
|
||||
import eu.kanade.domain.track.interactor.GetTracks
|
||||
import eu.kanade.tachiyomi.data.cache.CoverCache
|
||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||
@@ -489,10 +490,10 @@ class LibraryPresenter(
|
||||
*
|
||||
* @param mangas the list of manga.
|
||||
*/
|
||||
suspend fun getCommonCategories(mangas: List<DbManga>): Collection<Category> {
|
||||
suspend fun getCommonCategories(mangas: List<Manga>): Collection<Category> {
|
||||
if (mangas.isEmpty()) return emptyList()
|
||||
return mangas.toSet()
|
||||
.map { getCategories.await(it.id!!) }
|
||||
.map { getCategories.await(it.id) }
|
||||
.reduce { set1, set2 -> set1.intersect(set2).toMutableList() }
|
||||
}
|
||||
|
||||
@@ -501,9 +502,9 @@ class LibraryPresenter(
|
||||
*
|
||||
* @param mangas the list of manga.
|
||||
*/
|
||||
suspend fun getMixCategories(mangas: List<DbManga>): Collection<Category> {
|
||||
suspend fun getMixCategories(mangas: List<Manga>): Collection<Category> {
|
||||
if (mangas.isEmpty()) return emptyList()
|
||||
val mangaCategories = mangas.toSet().map { getCategories.await(it.id!!) }
|
||||
val mangaCategories = mangas.toSet().map { getCategories.await(it.id) }
|
||||
val common = mangaCategories.reduce { set1, set2 -> set1.intersect(set2).toMutableList() }
|
||||
return mangaCategories.flatten().distinct().subtract(common).toMutableList()
|
||||
}
|
||||
@@ -513,14 +514,14 @@ class LibraryPresenter(
|
||||
*
|
||||
* @param mangas the list of manga.
|
||||
*/
|
||||
fun downloadUnreadChapters(mangas: List<DbManga>) {
|
||||
fun downloadUnreadChapters(mangas: List<Manga>) {
|
||||
mangas.forEach { manga ->
|
||||
launchIO {
|
||||
val chapters = getChapterByMangaId.await(manga.id!!)
|
||||
val chapters = getChapterByMangaId.await(manga.id)
|
||||
.filter { !it.read }
|
||||
.map { it.toDbChapter() }
|
||||
|
||||
downloadManager.downloadChapters(manga, chapters)
|
||||
downloadManager.downloadChapters(manga.toDbManga(), chapters)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -530,10 +531,10 @@ class LibraryPresenter(
|
||||
*
|
||||
* @param mangas the list of manga.
|
||||
*/
|
||||
fun markReadStatus(mangas: List<DbManga>, read: Boolean) {
|
||||
fun markReadStatus(mangas: List<Manga>, read: Boolean) {
|
||||
mangas.forEach { manga ->
|
||||
launchIO {
|
||||
val chapters = getChapterByMangaId.await(manga.id!!)
|
||||
val chapters = getChapterByMangaId.await(manga.id)
|
||||
|
||||
val toUpdate = chapters
|
||||
.map { chapter ->
|
||||
@@ -552,9 +553,9 @@ class LibraryPresenter(
|
||||
}
|
||||
}
|
||||
|
||||
private fun deleteChapters(manga: DbManga, chapters: List<Chapter>) {
|
||||
private fun deleteChapters(manga: Manga, chapters: List<Chapter>) {
|
||||
sourceManager.get(manga.source)?.let { source ->
|
||||
downloadManager.deleteChapters(chapters, manga, source)
|
||||
downloadManager.deleteChapters(chapters, manga.toDbManga(), source)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
package eu.kanade.tachiyomi.ui.library
|
||||
|
||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||
import eu.kanade.domain.manga.model.Manga
|
||||
|
||||
sealed class LibrarySelectionEvent {
|
||||
|
||||
class Selected(val manga: Manga) : LibrarySelectionEvent()
|
||||
class Unselected(val manga: Manga) : LibrarySelectionEvent()
|
||||
class Cleared : LibrarySelectionEvent()
|
||||
object Cleared : LibrarySelectionEvent()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user