Migrate to more use of domain models

This commit is contained in:
arkon
2022-07-02 17:14:19 -04:00
parent 2674570792
commit 76c0ead1db
32 changed files with 184 additions and 235 deletions
@@ -4,8 +4,8 @@ import android.app.Dialog
import android.os.Bundle
import com.bluelinelabs.conductor.Controller
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import eu.kanade.domain.manga.model.Manga
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.ui.base.controller.DialogController
import eu.kanade.tachiyomi.ui.base.controller.pushController
@@ -24,14 +24,14 @@ import com.bluelinelabs.conductor.ControllerChangeHandler
import com.bluelinelabs.conductor.ControllerChangeType
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import eu.kanade.data.chapter.NoChaptersException
import eu.kanade.domain.category.model.Category
import eu.kanade.domain.manga.model.Manga
import eu.kanade.domain.manga.model.toDbManga
import eu.kanade.presentation.manga.ChapterDownloadAction
import eu.kanade.presentation.manga.DownloadAction
import eu.kanade.presentation.manga.MangaScreen
import eu.kanade.presentation.util.calculateWindowWidthSizeClass
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.Category
import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.download.DownloadService
import eu.kanade.tachiyomi.data.download.model.Download
import eu.kanade.tachiyomi.data.track.model.TrackSearch
@@ -59,7 +59,7 @@ import eu.kanade.tachiyomi.ui.recent.history.HistoryController
import eu.kanade.tachiyomi.ui.recent.updates.UpdatesController
import eu.kanade.tachiyomi.ui.webview.WebViewActivity
import eu.kanade.tachiyomi.util.lang.launchIO
import eu.kanade.tachiyomi.util.lang.launchUI
import eu.kanade.tachiyomi.util.lang.withUIContext
import eu.kanade.tachiyomi.util.system.logcat
import eu.kanade.tachiyomi.util.system.toast
import eu.kanade.tachiyomi.widget.materialdialogs.QuadStateTextView
@@ -211,7 +211,7 @@ class MangaController :
{
AddDuplicateMangaDialog(
target = this,
libraryManga = it.toDbManga(),
libraryManga = it,
onAddToLibrary = { onFavoriteClick(checkDuplicate = false) },
).showDialog(router)
}
@@ -225,7 +225,7 @@ class MangaController :
QuadStateTextView.State.UNCHECKED.ordinal
}
}.toTypedArray()
showChangeCategoryDialog(manga.toDbManga(), categories, preselected)
showChangeCategoryDialog(manga, categories, preselected)
},
)
}
@@ -246,10 +246,6 @@ class MangaController :
}
}
fun onTrackingClick() {
trackSheet.show()
}
private fun onCategoriesClick() {
viewScope.launchIO {
val manga = presenter.manga ?: return@launchIO
@@ -263,8 +259,9 @@ class MangaController :
QuadStateTextView.State.UNCHECKED.ordinal
}
}.toTypedArray()
launchUI {
showChangeCategoryDialog(manga.toDbManga(), categories, preselected)
withUIContext {
showChangeCategoryDialog(manga, categories, preselected)
}
}
}
@@ -4,7 +4,7 @@ import android.os.Bundle
import androidx.compose.runtime.Immutable
import eu.kanade.domain.category.interactor.GetCategories
import eu.kanade.domain.category.interactor.SetMangaCategories
import eu.kanade.domain.category.model.toDbCategory
import eu.kanade.domain.category.model.Category
import eu.kanade.domain.chapter.interactor.SyncChaptersWithSource
import eu.kanade.domain.chapter.interactor.SyncChaptersWithTrackServiceTwoWay
import eu.kanade.domain.chapter.interactor.UpdateChapter
@@ -23,9 +23,7 @@ import eu.kanade.domain.track.interactor.GetTracks
import eu.kanade.domain.track.interactor.InsertTrack
import eu.kanade.domain.track.model.toDbTrack
import eu.kanade.domain.track.model.toDomainTrack
import eu.kanade.tachiyomi.data.database.models.Category
import eu.kanade.tachiyomi.data.database.models.Chapter
import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.database.models.Track
import eu.kanade.tachiyomi.data.database.models.toDomainChapter
import eu.kanade.tachiyomi.data.download.DownloadManager
@@ -258,22 +256,22 @@ class MangaPresenter(
// Now check if user previously set categories, when available
val categories = getCategories()
val defaultCategoryId = preferences.defaultCategory()
val defaultCategoryId = preferences.defaultCategory().toLong()
val defaultCategory = categories.find { it.id == defaultCategoryId }
when {
// Default category set
defaultCategory != null -> {
val result = updateManga.awaitUpdateFavorite(manga.id, true)
if (!result) return@launchIO
moveMangaToCategory(manga.toDbManga(), defaultCategory)
moveMangaToCategory(defaultCategory)
launchUI { onAdded() }
}
// Automatic 'Default' or no categories
defaultCategoryId == 0 || categories.isEmpty() -> {
defaultCategoryId == 0L || categories.isEmpty() -> {
val result = updateManga.awaitUpdateFavorite(manga.id, true)
if (!result) return@launchIO
moveMangaToCategory(manga.toDbManga(), null)
moveMangaToCategory(null)
launchUI { onAdded() }
}
@@ -326,7 +324,7 @@ class MangaPresenter(
* @return List of categories, not including the default category
*/
suspend fun getCategories(): List<Category> {
return getCategories.await().map { it.toDbCategory() }
return getCategories.await()
}
/**
@@ -335,15 +333,15 @@ class MangaPresenter(
* @param manga the manga to get categories from.
* @return Array of category ids the manga is in, if none returns default id
*/
fun getMangaCategoryIds(manga: DomainManga): Array<Int> {
fun getMangaCategoryIds(manga: DomainManga): Array<Long> {
val categories = runBlocking { getCategories.await(manga.id) }
return categories.map { it.id.toInt() }.toTypedArray()
return categories.map { it.id }.toTypedArray()
}
fun moveMangaToCategoriesAndAddToLibrary(manga: Manga, categories: List<Category>) {
moveMangaToCategories(manga, categories)
fun moveMangaToCategoriesAndAddToLibrary(manga: DomainManga, categories: List<Category>) {
moveMangaToCategories(categories)
presenterScope.launchIO {
updateManga.awaitUpdateFavorite(manga.id!!, true)
updateManga.awaitUpdateFavorite(manga.id, true)
}
}
@@ -353,9 +351,8 @@ class MangaPresenter(
* @param manga the manga to move.
* @param categories the selected categories.
*/
private fun moveMangaToCategories(manga: Manga, categories: List<Category>) {
val mangaId = manga.id ?: return
val categoryIds = categories.mapNotNull { it.id?.toLong() }
private fun moveMangaToCategories(categories: List<Category>) {
val categoryIds = categories.map { it.id }
presenterScope.launchIO {
setMangaCategories.await(mangaId, categoryIds)
}
@@ -367,8 +364,8 @@ class MangaPresenter(
* @param manga the manga to move.
* @param category the selected category, or null for default category.
*/
private fun moveMangaToCategory(manga: Manga, category: Category?) {
moveMangaToCategories(manga, listOfNotNull(category))
private fun moveMangaToCategory(category: Category?) {
moveMangaToCategories(listOfNotNull(category))
}
private fun observeTrackingCount() {