Migrate to more use of domain models
This commit is contained in:
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user