From f1a31e4560fee3278089fd1424cbb6f70c1b1907 Mon Sep 17 00:00:00 2001 From: arkon Date: Sun, 3 Jul 2022 16:25:51 -0400 Subject: [PATCH] More domain model usage (cherry picked from commit 3791d8254034ffcab94ddd65ec290c28384e6526) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchCardItem.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt --- .../eu/kanade/domain/chapter/model/Chapter.kt | 3 ++- .../tachiyomi/data/database/models/Chapter.kt | 4 ---- .../process/MigrationListController.kt | 6 +++--- .../migration/search/SearchController.kt | 6 ++---- .../browse/migration/search/SearchPresenter.kt | 3 +-- .../migration/search/SourceSearchController.kt | 5 ++--- .../globalsearch/GlobalSearchCardAdapter.kt | 2 +- .../globalsearch/GlobalSearchCardHolder.kt | 2 +- .../globalsearch/GlobalSearchCardItem.kt | 5 ++--- .../globalsearch/GlobalSearchController.kt | 4 ++-- .../source/globalsearch/GlobalSearchHolder.kt | 4 ++-- .../globalsearch/GlobalSearchPresenter.kt | 4 ++-- .../tachiyomi/ui/library/LibraryController.kt | 2 +- .../tachiyomi/ui/library/LibraryPresenter.kt | 18 +++++++++--------- .../tachiyomi/ui/manga/MangaPresenter.kt | 13 +++++-------- .../tachiyomi/ui/reader/ReaderPresenter.kt | 2 +- 16 files changed, 36 insertions(+), 47 deletions(-) diff --git a/app/src/main/java/eu/kanade/domain/chapter/model/Chapter.kt b/app/src/main/java/eu/kanade/domain/chapter/model/Chapter.kt index 6b8fc57cd..ba67b6917 100644 --- a/app/src/main/java/eu/kanade/domain/chapter/model/Chapter.kt +++ b/app/src/main/java/eu/kanade/domain/chapter/model/Chapter.kt @@ -1,5 +1,6 @@ package eu.kanade.domain.chapter.model +import eu.kanade.tachiyomi.data.database.models.ChapterImpl import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.data.database.models.Chapter as DbChapter @@ -61,7 +62,7 @@ data class Chapter( } // TODO: Remove when all deps are migrated -fun Chapter.toDbChapter(): DbChapter = DbChapter.create().also { +fun Chapter.toDbChapter(): DbChapter = ChapterImpl().also { it.id = id it.manga_id = mangaId it.url = url diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Chapter.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Chapter.kt index 2437e0a39..90bbfdce9 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Chapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Chapter.kt @@ -20,11 +20,7 @@ interface Chapter : SChapter, Serializable { var source_order: Int - val isRecognizedNumber: Boolean - get() = chapter_number >= 0f - companion object { - fun create(): Chapter = ChapterImpl().apply { chapter_number = -1f } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationListController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationListController.kt index 12229b2c9..678bccbdb 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationListController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationListController.kt @@ -18,10 +18,10 @@ import dev.chrisbanes.insetter.applyInsetter import eu.kanade.domain.chapter.interactor.SyncChaptersWithSource import eu.kanade.domain.manga.interactor.GetManga import eu.kanade.domain.manga.interactor.UpdateManga +import eu.kanade.domain.manga.model.Manga import eu.kanade.domain.manga.model.toDbManga import eu.kanade.domain.manga.model.toMangaInfo 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.preference.PreferencesHelper import eu.kanade.tachiyomi.databinding.MigrationListControllerBinding @@ -333,7 +333,7 @@ class MigrationListController(bundle: Bundle? = null) : } else { sources.filter { it.id != manga.source } } - val searchController = SearchController(manga.toDbManga(), validSources) + val searchController = SearchController(manga, validSources) searchController.targetController = this@MigrationListController router.pushController(searchController) } @@ -357,7 +357,7 @@ class MigrationListController(bundle: Bundle? = null) : adapter?.notifyItemChanged(firstIndex) launchUI { val result = CoroutineScope(migratingManga.manga.migrationJob).async { - val localManga = smartSearchEngine.networkToLocalManga(manga, source.id).toDomainManga()!! + val localManga = smartSearchEngine.networkToLocalManga(manga.toDbManga(), source.id).toDomainManga()!! try { val chapters = source.getChapterList(localManga.toMangaInfo()) .map { it.toSChapter() } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt index 4e1e4af54..116fbb1eb 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt @@ -6,9 +6,8 @@ import android.view.MenuInflater import androidx.appcompat.widget.SearchView import androidx.core.os.bundleOf import eu.kanade.domain.manga.interactor.GetManga -import eu.kanade.domain.manga.model.toDbManga +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.CatalogueSource import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.ui.base.controller.pushController @@ -28,7 +27,7 @@ class SearchController( private var manga: Manga? = null, private var sources: List? = null, ) : GlobalSearchController( - manga?.originalTitle, + manga?.ogTitle, bundle = bundleOf( OLD_MANGA to manga?.id, SOURCES to sources?.map { it.id }?.toLongArray(), @@ -39,7 +38,6 @@ class SearchController( runBlocking { Injekt.get() .await(mangaId) - ?.toDbManga() }, sources.map { Injekt.get().getOrStub(it) }.filterIsInstance(), ) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchPresenter.kt index 05a257203..2db075fa4 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchPresenter.kt @@ -1,6 +1,5 @@ package eu.kanade.tachiyomi.ui.browse.migration.search - -import eu.kanade.tachiyomi.data.database.models.Manga +import eu.kanade.domain.manga.model.Manga import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchCardItem import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchItem diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchController.kt index 98ea92c77..2929350b6 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchController.kt @@ -3,8 +3,7 @@ package eu.kanade.tachiyomi.ui.browse.migration.search import android.os.Bundle import android.view.View import androidx.core.os.bundleOf -import eu.kanade.domain.manga.model.toDbManga -import eu.kanade.tachiyomi.data.database.models.Manga +import eu.kanade.domain.manga.model.Manga import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.ui.browse.migration.advanced.process.MigrationListController @@ -32,7 +31,7 @@ class SourceSearchController( val migrationListController = targetController as? MigrationListController ?: return false val sourceManager = Injekt.get() val source = sourceManager.get(manga.source) ?: return false - migrationListController.useMangaForMigration(manga.toDbManga(), source) + migrationListController.useMangaForMigration(manga, source) router.popCurrentController() router.popCurrentController() return true diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchCardAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchCardAdapter.kt index d9a8f430c..3c620a6ff 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchCardAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchCardAdapter.kt @@ -1,7 +1,7 @@ package eu.kanade.tachiyomi.ui.browse.source.globalsearch import eu.davidea.flexibleadapter.FlexibleAdapter -import eu.kanade.tachiyomi.data.database.models.Manga +import eu.kanade.domain.manga.model.Manga /** * Adapter that holds the manga items from search results. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchCardHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchCardHolder.kt index 58888764c..4a5222063 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchCardHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchCardHolder.kt @@ -4,8 +4,8 @@ import android.view.View import androidx.core.view.isVisible import coil.dispose import eu.davidea.viewholders.FlexibleViewHolder +import eu.kanade.domain.manga.model.Manga import eu.kanade.tachiyomi.data.coil.MangaCoverFetcher -import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.databinding.GlobalSearchControllerCardItemBinding import eu.kanade.tachiyomi.util.view.loadAutoPause diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchCardItem.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchCardItem.kt index 67031667d..5296d2d6d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchCardItem.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchCardItem.kt @@ -5,9 +5,8 @@ import androidx.recyclerview.widget.RecyclerView import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.items.AbstractFlexibleItem import eu.davidea.flexibleadapter.items.IFlexible +import eu.kanade.domain.manga.model.Manga import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.data.database.models.Manga -import uy.kohesive.injekt.api.get class GlobalSearchCardItem(val manga: Manga) : AbstractFlexibleItem() { @@ -36,6 +35,6 @@ class GlobalSearchCardItem(val manga: Manga) : AbstractFlexibleItem val item = mangaAdapter.getItem(holder.bindingAdapterPosition) - if (item != null && item.manga.id!! == manga.id!!) { + if (item != null && item.manga.id == manga.id) { return holder as GlobalSearchCardHolder } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchPresenter.kt index ef4cdab9c..456c3bf57 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchPresenter.kt @@ -180,7 +180,7 @@ open class GlobalSearchPresenter( .map { it.mangas } .map { list -> list.map { networkToLocalManga(it, source.id) } } // Convert to local manga .doOnNext { fetchImage(it, source) } // Load manga covers - .map { list -> createCatalogueSearchItem(source, list.map { GlobalSearchCardItem(it) }) } + .map { list -> createCatalogueSearchItem(source, list.map { GlobalSearchCardItem(it.toDomainManga()!!) }) } }, 5, ) @@ -240,7 +240,7 @@ open class GlobalSearchPresenter( .subscribe( { (source, manga) -> @Suppress("DEPRECATION") - view?.onMangaInitialized(source, manga) + view?.onMangaInitialized(source, manga.toDomainManga()!!) }, { error -> logcat(LogPriority.ERROR, error) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt index 542ddbae5..4fdd0684b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt @@ -873,7 +873,7 @@ class LibraryController( } val activity = activity ?: return val chapter = presenter.getFirstUnread(manga) ?: return - val intent = ReaderActivity.newIntent(activity, manga.id, chapter.id!!) + val intent = ReaderActivity.newIntent(activity, manga.id, chapter.id) destroyActionModeIfNeeded() startActivity(intent) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt index 03bd5d32b..106fd02d6 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt @@ -10,6 +10,7 @@ import eu.kanade.domain.category.model.Category import eu.kanade.domain.chapter.interactor.GetChapterByMangaId import eu.kanade.domain.chapter.interactor.GetMergedChapterByMangaId import eu.kanade.domain.chapter.interactor.UpdateChapter +import eu.kanade.domain.chapter.model.Chapter import eu.kanade.domain.chapter.model.ChapterUpdate import eu.kanade.domain.chapter.model.toDbChapter import eu.kanade.domain.manga.interactor.GetLibraryManga @@ -22,7 +23,6 @@ import eu.kanade.domain.manga.model.toDbManga import eu.kanade.domain.track.interactor.GetTracks import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.cache.CoverCache -import eu.kanade.tachiyomi.data.database.models.Chapter import eu.kanade.tachiyomi.data.database.models.toDomainManga import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.data.library.CustomMangaManager @@ -767,7 +767,7 @@ class LibraryPresenter( updateChapter.awaitAll(toUpdate) if (read && preferences.removeAfterMarkedAsRead()) { - deleteChapters(manga, chapters.map { it.toDbChapter() }) + deleteChapters(manga, chapters) } } } @@ -779,12 +779,12 @@ class LibraryPresenter( if (source is MergedSource) { val mergedMangas = runBlocking { getMergedMangaById.await(manga.id) } val sources = mergedMangas.distinctBy { it.source }.map { sourceManager.getOrStub(it.source) } - chapters.groupBy { it.manga_id }.forEach { (mangaId, chapters) -> + chapters.groupBy { it.mangaId }.forEach { (mangaId, chapters) -> val mergedManga = mergedMangas.firstOrNull { it.id == mangaId } ?: return@forEach val mergedMangaSource = sources.firstOrNull { it.id == mergedManga.source } ?: return@forEach - downloadManager.deleteChapters(chapters, mergedManga.toDbManga(), mergedMangaSource) + downloadManager.deleteChapters(chapters.map { it.toDbChapter() }, mergedManga.toDbManga(), mergedMangaSource) } - } else /* SY <-- */ downloadManager.deleteChapters(chapters, manga.toDbManga(), source) + } else /* SY <-- */ downloadManager.deleteChapters(chapters.map { it.toDbChapter() }, manga.toDbManga(), source) } } @@ -851,13 +851,13 @@ class LibraryPresenter( /** Returns first unread chapter of a manga */ fun getFirstUnread(manga: Manga): Chapter? { val chapters = if (manga.source == MERGED_SOURCE_ID) { - (sourceManager.get(MERGED_SOURCE_ID) as MergedSource).getChaptersAsBlockingAsDbChapter(manga.id) - } else runBlocking { getChapterByMangaId.await(manga.id) }.map { it.toDbChapter() } + (sourceManager.get(MERGED_SOURCE_ID) as MergedSource).getChaptersAsBlocking(manga.id) + } else runBlocking { getChapterByMangaId.await(manga.id) } return if (manga.isEhBasedManga()) { - val chapter = chapters.sortedBy { it.source_order }.getOrNull(0) + val chapter = chapters.sortedBy { it.sourceOrder }.getOrNull(0) if (chapter?.read == false) chapter else null } else { - chapters.sortedByDescending { it.source_order }.find { !it.read } + chapters.sortedByDescending { it.sourceOrder }.find { !it.read } } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt index bbe4a0e8f..ce6db5a48 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt @@ -38,9 +38,7 @@ 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.R -import eu.kanade.tachiyomi.data.database.models.Chapter import eu.kanade.tachiyomi.data.database.models.Track -import eu.kanade.tachiyomi.data.database.models.toDomainChapter import eu.kanade.tachiyomi.data.database.models.toDomainManga import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.data.download.model.Download @@ -755,7 +753,7 @@ class MangaPresenter( getTracks.subscribe(manga.id) .catch { logcat(LogPriority.ERROR, it) } .map { tracks -> - val loggedServicesId = loggedServices.map { it.id.toLong() } + val loggedServicesId = loggedServices.map { it.id } tracks .filter { it.syncId in loggedServicesId } // SY --> @@ -867,8 +865,7 @@ class MangaPresenter( ) if (manualFetch) { - val dbChapters = newChapters.map { it.toDbChapter() } - downloadNewChapters(dbChapters) + downloadNewChapters(newChapters) } } else { successState.source.fetchChaptersForMergedManga(successState.manga, manualFetch, true, dedupe) @@ -1012,12 +1009,12 @@ class MangaPresenter( } } - private fun downloadNewChapters(chapters: List) { + private fun downloadNewChapters(chapters: List) { presenterScope.launchIO { val manga = successState?.manga ?: return@launchIO val categories = getCategories.await(manga.id).map { it.id } if (chapters.isEmpty() || !manga.shouldDownloadNewChapters(categories, preferences) || manga.isEhBasedManga()) return@launchIO - downloadChapters(chapters.map { it.toDomainChapter()!! }) + downloadChapters(chapters) } } @@ -1246,7 +1243,7 @@ class MangaPresenter( val manga = successState?.manga ?: return presenterScope.launchIO { - deleteTrack.await(manga.id, service.id.toLong()) + deleteTrack.await(manga.id, service.id) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt index f6196f888..887f41ceb 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt @@ -166,7 +166,7 @@ class ReaderPresenter( val chapters = runBlocking { /* SY --> */ if (manga.source == MERGED_SOURCE_ID) { (sourceManager.get(MERGED_SOURCE_ID) as MergedSource) - .getChaptersAsBlocking(manga.id!!) + .getChapters(manga.id!!) } else /* SY <-- */ getChapterByMangaId.await(manga.id!!) }