From d33efced68a98b065ff8c19df74d8b2ce9a53451 Mon Sep 17 00:00:00 2001 From: Cuong-Tran Date: Wed, 14 May 2025 15:14:25 +0700 Subject: [PATCH] refactor(network-to-local): simplify networkToLocalManga (#910) --- .../presentation/browse/GlobalSearchScreen.kt | 4 ++-- .../browse/MigrateSearchScreen.kt | 4 ++-- .../presentation/browse/SourceFeedScreen.kt | 4 ++-- .../presentation/components/TabbedScreen.kt | 4 ++-- .../tachiyomi/ui/browse/feed/FeedTab.kt | 4 ++-- .../migration/search/MigrateSearchScreen.kt | 4 ++-- .../migration/search/SourceSearchScreen.kt | 8 ++++---- .../source/browse/BrowseSourceScreen.kt | 8 ++++---- .../ui/browse/source/feed/SourceFeedScreen.kt | 4 ++-- .../source/globalsearch/GlobalSearchScreen.kt | 6 +++--- .../kanade/tachiyomi/ui/manga/MangaScreen.kt | 4 ++-- .../tachiyomi/ui/manga/RelatedMangasScreen.kt | 8 ++++---- .../exh/md/follows/MangaDexFollowsScreen.kt | 8 ++++---- .../java/exh/recs/BrowseRecommendsScreen.kt | 8 ++++---- .../main/java/exh/recs/RecommendsScreen.kt | 4 ++-- .../java/exh/recs/RecommendsScreenModel.kt | 2 +- .../manga/interactor/NetworkToLocalManga.kt | 20 +------------------ 17 files changed, 43 insertions(+), 61 deletions(-) diff --git a/app/src/main/java/eu/kanade/presentation/browse/GlobalSearchScreen.kt b/app/src/main/java/eu/kanade/presentation/browse/GlobalSearchScreen.kt index 1d4f904df..36a3ac166 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/GlobalSearchScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/GlobalSearchScreen.kt @@ -64,7 +64,7 @@ fun GlobalSearchScreen( .flatMap { it.result } .let { scope.launchIO { - bulkFavoriteScreenModel.networkToLocalManga.getLocal(it) + bulkFavoriteScreenModel.networkToLocalManga(it) .forEach { bulkFavoriteScreenModel.select(it) } } } @@ -76,7 +76,7 @@ fun GlobalSearchScreen( .let { scope.launchIO { bulkFavoriteScreenModel.reverseSelection( - bulkFavoriteScreenModel.networkToLocalManga.getLocal(it), + bulkFavoriteScreenModel.networkToLocalManga(it), ) } } diff --git a/app/src/main/java/eu/kanade/presentation/browse/MigrateSearchScreen.kt b/app/src/main/java/eu/kanade/presentation/browse/MigrateSearchScreen.kt index 61dfa4081..0a96969fa 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/MigrateSearchScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/MigrateSearchScreen.kt @@ -54,7 +54,7 @@ fun MigrateSearchScreen( .flatMap { it.result } .let { scope.launchIO { - bulkFavoriteScreenModel.networkToLocalManga.getLocal(it) + bulkFavoriteScreenModel.networkToLocalManga(it) .forEach { bulkFavoriteScreenModel.select(it) } } } @@ -66,7 +66,7 @@ fun MigrateSearchScreen( .let { scope.launchIO { bulkFavoriteScreenModel.reverseSelection( - bulkFavoriteScreenModel.networkToLocalManga.getLocal(it), + bulkFavoriteScreenModel.networkToLocalManga(it), ) } } diff --git a/app/src/main/java/eu/kanade/presentation/browse/SourceFeedScreen.kt b/app/src/main/java/eu/kanade/presentation/browse/SourceFeedScreen.kt index f0c5e842d..0e5a8f202 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/SourceFeedScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/SourceFeedScreen.kt @@ -132,7 +132,7 @@ fun SourceFeedScreen( .flatten() .let { scope.launchIO { - bulkFavoriteScreenModel.networkToLocalManga.getLocal(it) + bulkFavoriteScreenModel.networkToLocalManga(it) .forEach { bulkFavoriteScreenModel.select(it) } } } @@ -143,7 +143,7 @@ fun SourceFeedScreen( .let { scope.launchIO { bulkFavoriteScreenModel.reverseSelection( - bulkFavoriteScreenModel.networkToLocalManga.getLocal(it), + bulkFavoriteScreenModel.networkToLocalManga(it), ) } } diff --git a/app/src/main/java/eu/kanade/presentation/components/TabbedScreen.kt b/app/src/main/java/eu/kanade/presentation/components/TabbedScreen.kt index 398bbaf87..012ead418 100644 --- a/app/src/main/java/eu/kanade/presentation/components/TabbedScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/components/TabbedScreen.kt @@ -71,7 +71,7 @@ fun TabbedScreen( .flatten() .let { scope.launchIO { - bulkFavoriteScreenModel.networkToLocalManga.getLocal(it) + bulkFavoriteScreenModel.networkToLocalManga(it) .forEach { bulkFavoriteScreenModel.select(it) } } } @@ -84,7 +84,7 @@ fun TabbedScreen( .let { scope.launchIO { bulkFavoriteScreenModel.reverseSelection( - bulkFavoriteScreenModel.networkToLocalManga.getLocal(it), + bulkFavoriteScreenModel.networkToLocalManga(it), ) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/feed/FeedTab.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/feed/FeedTab.kt index bcce2ac1f..0e1d7042f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/feed/FeedTab.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/feed/FeedTab.kt @@ -171,7 +171,7 @@ fun Screen.feedTab( onClickManga = { // KMK --> scope.launchIO { - val manga = screenModel.networkToLocalManga.getLocal(it) + val manga = screenModel.networkToLocalManga(it) if (bulkFavoriteState.selectionMode) { bulkFavoriteScreenModel.toggleSelection(manga) } else { @@ -183,7 +183,7 @@ fun Screen.feedTab( // KMK --> onLongClickManga = { scope.launchIO { - val manga = screenModel.networkToLocalManga.getLocal(it) + val manga = screenModel.networkToLocalManga(it) if (!bulkFavoriteState.selectionMode) { bulkFavoriteScreenModel.addRemoveManga(manga, haptic) } else { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateSearchScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateSearchScreen.kt index 454c4df20..578b26802 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateSearchScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateSearchScreen.kt @@ -58,7 +58,7 @@ class MigrateSearchScreen(private val mangaId: Long, private val validSources: L onClickItem = { // KMK --> scope.launchIO { - val manga = screenModel.networkToLocalManga.getLocal(it) + val manga = screenModel.networkToLocalManga(it) if (bulkFavoriteState.selectionMode) { bulkFavoriteScreenModel.toggleSelection(manga) } else @@ -77,7 +77,7 @@ class MigrateSearchScreen(private val mangaId: Long, private val validSources: L onLongClickItem = { // KMK --> scope.launchIO { - val manga = screenModel.networkToLocalManga.getLocal(it) + val manga = screenModel.networkToLocalManga(it) // KMK <-- navigator.push(MangaScreen(manga.id, true)) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchScreen.kt index a23a54f95..3c907a6fe 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchScreen.kt @@ -94,7 +94,7 @@ data class SourceSearchScreen( .map { it.value.first } .let { scope.launchIO { - bulkFavoriteScreenModel.networkToLocalManga.getLocal(it) + bulkFavoriteScreenModel.networkToLocalManga(it) .forEach { bulkFavoriteScreenModel.select(it) } } } @@ -105,7 +105,7 @@ data class SourceSearchScreen( .let { scope.launchIO { bulkFavoriteScreenModel.reverseSelection( - bulkFavoriteScreenModel.networkToLocalManga.getLocal(it), + bulkFavoriteScreenModel.networkToLocalManga(it), ) } } @@ -178,7 +178,7 @@ data class SourceSearchScreen( onMangaClick = { // KMK --> scope.launchIO { - val manga = screenModel.networkToLocalManga.getLocal(it) + val manga = screenModel.networkToLocalManga(it) if (bulkFavoriteState.selectionMode) { bulkFavoriteScreenModel.toggleSelection(manga) } else { @@ -190,7 +190,7 @@ data class SourceSearchScreen( onMangaLongClick = { // KMK --> scope.launchIO { - val manga = screenModel.networkToLocalManga.getLocal(it) + val manga = screenModel.networkToLocalManga(it) // KMK <-- navigator.push(MangaScreen(manga.id, true)) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt index 85774d0cf..529357c7f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreen.kt @@ -204,7 +204,7 @@ data class BrowseSourceScreen( .map { it.value.first } .let { scope.launchIO { - bulkFavoriteScreenModel.networkToLocalManga.getLocal(it) + bulkFavoriteScreenModel.networkToLocalManga(it) .forEach { bulkFavoriteScreenModel.select(it) } } } @@ -215,7 +215,7 @@ data class BrowseSourceScreen( .let { scope.launchIO { bulkFavoriteScreenModel.reverseSelection( - bulkFavoriteScreenModel.networkToLocalManga.getLocal(it), + bulkFavoriteScreenModel.networkToLocalManga(it), ) } } @@ -370,7 +370,7 @@ data class BrowseSourceScreen( onMangaClick = { // KMK --> scope.launchIO { - val manga = screenModel.networkToLocalManga.getLocal(it) + val manga = screenModel.networkToLocalManga(it) if (bulkFavoriteState.selectionMode) { bulkFavoriteScreenModel.toggleSelection(manga) } else { @@ -392,7 +392,7 @@ data class BrowseSourceScreen( onMangaLongClick = { // KMK --> scope.launchIO { - val manga = screenModel.networkToLocalManga.getLocal(it) + val manga = screenModel.networkToLocalManga(it) if (bulkFavoriteState.selectionMode) { navigator.push(MangaScreen(manga.id, true)) } else { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt index 9d5116ef6..9b7204ece 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/feed/SourceFeedScreen.kt @@ -129,7 +129,7 @@ class SourceFeedScreen(val sourceId: Long) : Screen() { onClickManga = { // KMK --> scope.launchIO { - val manga = screenModel.networkToLocalManga.getLocal(it) + val manga = screenModel.networkToLocalManga(it) if (bulkFavoriteState.selectionMode) { bulkFavoriteScreenModel.toggleSelection(manga) } else { @@ -172,7 +172,7 @@ class SourceFeedScreen(val sourceId: Long) : Screen() { }, onLongClickManga = { scope.launchIO { - val manga = screenModel.networkToLocalManga.getLocal(it) + val manga = screenModel.networkToLocalManga(it) if (!bulkFavoriteState.selectionMode) { bulkFavoriteScreenModel.addRemoveManga(manga, haptic) } else { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchScreen.kt index 80245dec7..2d52d0147 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchScreen.kt @@ -71,7 +71,7 @@ class GlobalSearchScreen( if (manga != null) { // KMK --> scope.launchIO { - val localManga = screenModel.networkToLocalManga.getLocal(manga) + val localManga = screenModel.networkToLocalManga(manga) // KMK <-- navigator.replace(MangaScreen(localManga.id, true)) } @@ -98,7 +98,7 @@ class GlobalSearchScreen( onClickItem = { // KMK --> scope.launchIO { - val manga = screenModel.networkToLocalManga.getLocal(it) + val manga = screenModel.networkToLocalManga(it) if (bulkFavoriteState.selectionMode) { bulkFavoriteScreenModel.toggleSelection(manga) } else { @@ -110,7 +110,7 @@ class GlobalSearchScreen( onLongClickItem = { // KMK --> scope.launchIO { - val manga = screenModel.networkToLocalManga.getLocal(it) + val manga = screenModel.networkToLocalManga(it) if (!bulkFavoriteState.selectionMode) { bulkFavoriteScreenModel.addRemoveManga(manga, haptic) } else { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt index 51679b2b8..c135d875c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt @@ -391,13 +391,13 @@ class MangaScreen( }, onRelatedMangaClick = { scope.launchIO { - val manga = screenModel.networkToLocalManga.getLocal(it) + val manga = screenModel.networkToLocalManga(it) navigator.push(MangaScreen(manga.id, true)) } }, onRelatedMangaLongClick = { scope.launchIO { - val manga = screenModel.networkToLocalManga.getLocal(it) + val manga = screenModel.networkToLocalManga(it) bulkFavoriteScreenModel.addRemoveManga(manga, haptic) } }, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/RelatedMangasScreen.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/RelatedMangasScreen.kt index f42706b8d..06f8e6adb 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/RelatedMangasScreen.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/RelatedMangasScreen.kt @@ -60,7 +60,7 @@ fun RelatedMangasScreen( .flatMap { it.mangaList } .let { scope.launchIO { - bulkFavoriteScreenModel.networkToLocalManga.getLocal(it) + bulkFavoriteScreenModel.networkToLocalManga(it) .forEach { bulkFavoriteScreenModel.select(it) } } } @@ -73,7 +73,7 @@ fun RelatedMangasScreen( .let { scope.launchIO { bulkFavoriteScreenModel.reverseSelection( - bulkFavoriteScreenModel.networkToLocalManga.getLocal(it), + bulkFavoriteScreenModel.networkToLocalManga(it), ) } } @@ -102,7 +102,7 @@ fun RelatedMangasScreen( contentPadding = paddingValues, onMangaClick = { scope.launchIO { - val manga = screenModel.networkToLocalManga.getLocal(it) + val manga = screenModel.networkToLocalManga(it) if (bulkFavoriteState.selectionMode) { bulkFavoriteScreenModel.toggleSelection(manga) } else { @@ -112,7 +112,7 @@ fun RelatedMangasScreen( }, onMangaLongClick = { scope.launchIO { - val manga = screenModel.networkToLocalManga.getLocal(it) + val manga = screenModel.networkToLocalManga(it) if (!bulkFavoriteState.selectionMode) { bulkFavoriteScreenModel.addRemoveManga(manga, haptic) } else { diff --git a/app/src/main/java/exh/md/follows/MangaDexFollowsScreen.kt b/app/src/main/java/exh/md/follows/MangaDexFollowsScreen.kt index d29378d49..9860c1d0d 100644 --- a/app/src/main/java/exh/md/follows/MangaDexFollowsScreen.kt +++ b/app/src/main/java/exh/md/follows/MangaDexFollowsScreen.kt @@ -79,7 +79,7 @@ class MangaDexFollowsScreen(private val sourceId: Long) : Screen() { .map { it.value.first } .let { scope.launchIO { - bulkFavoriteScreenModel.networkToLocalManga.getLocal(it) + bulkFavoriteScreenModel.networkToLocalManga(it) .forEach { bulkFavoriteScreenModel.select(it) } } } @@ -90,7 +90,7 @@ class MangaDexFollowsScreen(private val sourceId: Long) : Screen() { .let { scope.launchIO { bulkFavoriteScreenModel.reverseSelection( - bulkFavoriteScreenModel.networkToLocalManga.getLocal(it), + bulkFavoriteScreenModel.networkToLocalManga(it), ) } } @@ -131,7 +131,7 @@ class MangaDexFollowsScreen(private val sourceId: Long) : Screen() { onMangaClick = { // KMK --> scope.launchIO { - val manga = screenModel.networkToLocalManga.getLocal(it) + val manga = screenModel.networkToLocalManga(it) if (bulkFavoriteState.selectionMode) { bulkFavoriteScreenModel.toggleSelection(manga) } else { @@ -143,7 +143,7 @@ class MangaDexFollowsScreen(private val sourceId: Long) : Screen() { onMangaLongClick = { // KMK --> scope.launchIO { - val manga = screenModel.networkToLocalManga.getLocal(it) + val manga = screenModel.networkToLocalManga(it) if (bulkFavoriteState.selectionMode) { navigator.push(MangaScreen(manga.id, true)) } else { diff --git a/app/src/main/java/exh/recs/BrowseRecommendsScreen.kt b/app/src/main/java/exh/recs/BrowseRecommendsScreen.kt index aa3e7e078..e9461093d 100644 --- a/app/src/main/java/exh/recs/BrowseRecommendsScreen.kt +++ b/app/src/main/java/exh/recs/BrowseRecommendsScreen.kt @@ -99,7 +99,7 @@ class BrowseRecommendsScreen( .map { it.value.first } .let { scope.launchIO { - bulkFavoriteScreenModel.networkToLocalManga.getLocal(it) + bulkFavoriteScreenModel.networkToLocalManga(it) .forEach { bulkFavoriteScreenModel.select(it) } } } @@ -110,7 +110,7 @@ class BrowseRecommendsScreen( .let { scope.launchIO { bulkFavoriteScreenModel.reverseSelection( - bulkFavoriteScreenModel.networkToLocalManga.getLocal(it), + bulkFavoriteScreenModel.networkToLocalManga(it), ) } } @@ -159,7 +159,7 @@ class BrowseRecommendsScreen( onClickItem(it) } else { scope.launchIO { - val manga = screenModel.networkToLocalManga.getLocal(it) + val manga = screenModel.networkToLocalManga(it) if (bulkFavoriteState.selectionMode) { bulkFavoriteScreenModel.toggleSelection(manga) } else { @@ -175,7 +175,7 @@ class BrowseRecommendsScreen( onLongClickItem(it) } else { scope.launchIO { - val manga = screenModel.networkToLocalManga.getLocal(it) + val manga = screenModel.networkToLocalManga(it) if (!bulkFavoriteState.selectionMode) { bulkFavoriteScreenModel.addRemoveManga(manga, haptic) } else { diff --git a/app/src/main/java/exh/recs/RecommendsScreen.kt b/app/src/main/java/exh/recs/RecommendsScreen.kt index 1afc8a439..140e8f875 100644 --- a/app/src/main/java/exh/recs/RecommendsScreen.kt +++ b/app/src/main/java/exh/recs/RecommendsScreen.kt @@ -59,7 +59,7 @@ class RecommendsScreen(val mangaId: Long, val sourceId: Long) : Screen() { else -> { // KMK --> scope.launchIO { - val localManga = screenModel.networkToLocalManga.getLocal(manga) + val localManga = screenModel.networkToLocalManga(manga) navigator.push( // KMK <-- MangaScreen(localManga.id, true), @@ -75,7 +75,7 @@ class RecommendsScreen(val mangaId: Long, val sourceId: Long) : Screen() { else -> { // KMK --> scope.launchIO { - val localManga = screenModel.networkToLocalManga.getLocal(manga) + val localManga = screenModel.networkToLocalManga(manga) bulkFavoriteScreenModel.addRemoveManga( localManga, haptic, diff --git a/app/src/main/java/exh/recs/RecommendsScreenModel.kt b/app/src/main/java/exh/recs/RecommendsScreenModel.kt index a404cb83c..a153b1740 100644 --- a/app/src/main/java/exh/recs/RecommendsScreenModel.kt +++ b/app/src/main/java/exh/recs/RecommendsScreenModel.kt @@ -83,8 +83,8 @@ open class RecommendsScreenModel( // If the recommendation is associated with a source, resolve it // Otherwise, skip this step. The user will be prompted to choose a source via SmartSearch it.toDomainManga(recSourceId ?: RECOMMENDS_SOURCE) - /* KMK --> .let { networkToLocalManga(it) } KMK <-- */ } + /* KMK --> .let { networkToLocalManga(it) } KMK <-- */ // KMK <-- .distinctBy { it.url } diff --git a/domain/src/main/java/tachiyomi/domain/manga/interactor/NetworkToLocalManga.kt b/domain/src/main/java/tachiyomi/domain/manga/interactor/NetworkToLocalManga.kt index 1e4674b50..f909aaca9 100644 --- a/domain/src/main/java/tachiyomi/domain/manga/interactor/NetworkToLocalManga.kt +++ b/domain/src/main/java/tachiyomi/domain/manga/interactor/NetworkToLocalManga.kt @@ -8,28 +8,10 @@ class NetworkToLocalManga( ) { suspend operator fun invoke(manga: Manga): Manga { - return invoke(listOf(manga)).single() + return if (manga.id <= 0) invoke(listOf(manga)).single() else manga } suspend operator fun invoke(manga: List): List { return mangaRepository.insertNetworkManga(manga) } - - // KMK --> - suspend fun getLocal(manga: Manga): Manga = if (manga.id <= 0) { - invoke(manga) - } else { - manga - } - - suspend fun getLocal(mangas: List): List { - return mangas.map { manga -> - if (manga.id <= 0) { - invoke(manga) - } else { - manga - } - } - } - // KMK <-- }