refactor(network-to-local): simplify networkToLocalManga (#910)

This commit is contained in:
Cuong-Tran 2025-05-14 15:14:25 +07:00 committed by GitHub
parent a18cc3e6a9
commit d33efced68
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 43 additions and 61 deletions

View file

@ -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),
)
}
}

View file

@ -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),
)
}
}

View file

@ -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),
)
}
}

View file

@ -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),
)
}
}

View file

@ -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 {

View file

@ -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))
}

View file

@ -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))
}

View file

@ -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 {

View file

@ -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 {

View file

@ -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 {

View file

@ -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)
}
},

View file

@ -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 {

View file

@ -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 {

View file

@ -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 {

View file

@ -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,

View file

@ -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 }

View file

@ -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<Manga>): List<Manga> {
return mangaRepository.insertNetworkManga(manga)
}
// KMK -->
suspend fun getLocal(manga: Manga): Manga = if (manga.id <= 0) {
invoke(manga)
} else {
manga
}
suspend fun getLocal(mangas: List<Manga>): List<Manga> {
return mangas.map { manga ->
if (manga.id <= 0) {
invoke(manga)
} else {
manga
}
}
}
// KMK <--
}