refactor(bulk-selection): optimize selectAll/reverseSelection logic (#898)
This commit is contained in:
parent
78f03f8207
commit
4fcbd88618
9 changed files with 56 additions and 81 deletions
|
|
@ -56,20 +56,16 @@ fun GlobalSearchScreen(
|
|||
onClickClearSelection = bulkFavoriteScreenModel::toggleSelectionMode,
|
||||
onChangeCategoryClick = bulkFavoriteScreenModel::addFavorite,
|
||||
onSelectAll = {
|
||||
state.filteredItems.forEach { (_, result) ->
|
||||
if (result is SearchItemResult.Success) {
|
||||
result.result.forEach { manga ->
|
||||
bulkFavoriteScreenModel.select(manga)
|
||||
}
|
||||
}
|
||||
}
|
||||
state.filteredItems.values
|
||||
.filterIsInstance<SearchItemResult.Success>()
|
||||
.flatMap { it.result }
|
||||
.forEach { bulkFavoriteScreenModel.select(it) }
|
||||
},
|
||||
onReverseSelection = {
|
||||
bulkFavoriteScreenModel.reverseSelection(
|
||||
state.filteredItems.values
|
||||
.filterIsInstance<SearchItemResult.Success>()
|
||||
.flatMap { it.result },
|
||||
)
|
||||
state.filteredItems.values
|
||||
.filterIsInstance<SearchItemResult.Success>()
|
||||
.flatMap { it.result }
|
||||
.let { bulkFavoriteScreenModel.reverseSelection(it) }
|
||||
},
|
||||
)
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -46,23 +46,16 @@ fun MigrateSearchScreen(
|
|||
onClickClearSelection = bulkFavoriteScreenModel::toggleSelectionMode,
|
||||
onChangeCategoryClick = bulkFavoriteScreenModel::addFavorite,
|
||||
onSelectAll = {
|
||||
state.filteredItems.forEach { (_, result) ->
|
||||
when (result) {
|
||||
is SearchItemResult.Success -> {
|
||||
result.result.forEach { manga ->
|
||||
bulkFavoriteScreenModel.select(manga)
|
||||
}
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
state.filteredItems.values
|
||||
.filterIsInstance<SearchItemResult.Success>()
|
||||
.flatMap { it.result }
|
||||
.forEach { bulkFavoriteScreenModel.select(it) }
|
||||
},
|
||||
onReverseSelection = {
|
||||
bulkFavoriteScreenModel.reverseSelection(
|
||||
state.filteredItems.values
|
||||
.filterIsInstance<SearchItemResult.Success>()
|
||||
.flatMap { it.result },
|
||||
)
|
||||
state.filteredItems.values
|
||||
.filterIsInstance<SearchItemResult.Success>()
|
||||
.flatMap { it.result }
|
||||
.let { bulkFavoriteScreenModel.reverseSelection(it) }
|
||||
},
|
||||
)
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -124,17 +124,14 @@ fun SourceFeedScreen(
|
|||
onClickClearSelection = bulkFavoriteScreenModel::toggleSelectionMode,
|
||||
onChangeCategoryClick = bulkFavoriteScreenModel::addFavorite,
|
||||
onSelectAll = {
|
||||
items.forEach {
|
||||
it.results?.forEach { manga ->
|
||||
bulkFavoriteScreenModel.select(manga)
|
||||
}
|
||||
}
|
||||
items.mapNotNull { it.results }
|
||||
.flatten()
|
||||
.forEach { bulkFavoriteScreenModel.select(it) }
|
||||
},
|
||||
onReverseSelection = {
|
||||
bulkFavoriteScreenModel.reverseSelection(
|
||||
items.mapNotNull { it.results }
|
||||
.flatten(),
|
||||
)
|
||||
items.mapNotNull { it.results }
|
||||
.flatten()
|
||||
.let { bulkFavoriteScreenModel.reverseSelection(it) }
|
||||
},
|
||||
)
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -65,17 +65,18 @@ fun TabbedScreen(
|
|||
onClickClearSelection = bulkFavoriteScreenModel::toggleSelectionMode,
|
||||
onChangeCategoryClick = bulkFavoriteScreenModel::addFavorite,
|
||||
onSelectAll = {
|
||||
feedState.items?.forEach {
|
||||
it.results?.forEach { manga ->
|
||||
bulkFavoriteScreenModel.select(manga)
|
||||
}
|
||||
feedState.items?.let { result ->
|
||||
result.mapNotNull { it.results }
|
||||
.flatten()
|
||||
.forEach { bulkFavoriteScreenModel.select(it) }
|
||||
}
|
||||
},
|
||||
onReverseSelection = {
|
||||
feedState.items
|
||||
?.mapNotNull { it.results }
|
||||
?.flatten()
|
||||
?.let { bulkFavoriteScreenModel.reverseSelection(it) }
|
||||
feedState.items?.let { result ->
|
||||
result.mapNotNull { it.results }
|
||||
.flatten()
|
||||
.let { bulkFavoriteScreenModel.reverseSelection(it) }
|
||||
}
|
||||
},
|
||||
)
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -89,15 +89,12 @@ data class SourceSearchScreen(
|
|||
onSelectAll = {
|
||||
mangaList.itemSnapshotList.items
|
||||
.map { it.value.first }
|
||||
.forEach { manga ->
|
||||
bulkFavoriteScreenModel.select(manga)
|
||||
}
|
||||
.forEach { bulkFavoriteScreenModel.select(it) }
|
||||
},
|
||||
onReverseSelection = {
|
||||
bulkFavoriteScreenModel.reverseSelection(
|
||||
mangaList.itemSnapshotList.items
|
||||
.map { it.value.first },
|
||||
)
|
||||
mangaList.itemSnapshotList.items
|
||||
.map { it.value.first }
|
||||
.let { bulkFavoriteScreenModel.reverseSelection(it) }
|
||||
},
|
||||
)
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -202,15 +202,12 @@ data class BrowseSourceScreen(
|
|||
onSelectAll = {
|
||||
mangaList.itemSnapshotList.items
|
||||
.map { it.value.first }
|
||||
.forEach { manga ->
|
||||
bulkFavoriteScreenModel.select(manga)
|
||||
}
|
||||
.forEach { bulkFavoriteScreenModel.select(it) }
|
||||
},
|
||||
onReverseSelection = {
|
||||
bulkFavoriteScreenModel.reverseSelection(
|
||||
mangaList.itemSnapshotList.items
|
||||
.map { it.value.first },
|
||||
)
|
||||
mangaList.itemSnapshotList.items
|
||||
.map { it.value.first }
|
||||
.let { bulkFavoriteScreenModel.reverseSelection(it) }
|
||||
},
|
||||
)
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -54,18 +54,18 @@ fun RelatedMangasScreen(
|
|||
onClickClearSelection = bulkFavoriteScreenModel::toggleSelectionMode,
|
||||
onChangeCategoryClick = bulkFavoriteScreenModel::addFavorite,
|
||||
onSelectAll = {
|
||||
successState.relatedMangasSorted?.forEach {
|
||||
val relatedManga = it as RelatedManga.Success
|
||||
relatedManga.mangaList.forEach { manga ->
|
||||
bulkFavoriteScreenModel.select(manga)
|
||||
}
|
||||
successState.relatedMangasSorted?.let { result ->
|
||||
result.map { it as RelatedManga.Success }
|
||||
.flatMap { it.mangaList }
|
||||
.forEach { bulkFavoriteScreenModel.select(it) }
|
||||
}
|
||||
},
|
||||
onReverseSelection = {
|
||||
successState.relatedMangasSorted
|
||||
?.map { it as RelatedManga.Success }
|
||||
?.flatMap { it.mangaList }
|
||||
?.let { bulkFavoriteScreenModel.reverseSelection(it) }
|
||||
successState.relatedMangasSorted?.let { result ->
|
||||
result.map { it as RelatedManga.Success }
|
||||
.flatMap { it.mangaList }
|
||||
.let { bulkFavoriteScreenModel.reverseSelection(it) }
|
||||
}
|
||||
},
|
||||
)
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -77,15 +77,12 @@ class MangaDexFollowsScreen(private val sourceId: Long) : Screen() {
|
|||
onSelectAll = {
|
||||
mangaList.itemSnapshotList.items
|
||||
.map { it.value.first }
|
||||
.forEach { manga ->
|
||||
bulkFavoriteScreenModel.select(manga)
|
||||
}
|
||||
.forEach { bulkFavoriteScreenModel.select(it) }
|
||||
},
|
||||
onReverseSelection = {
|
||||
bulkFavoriteScreenModel.reverseSelection(
|
||||
mangaList.itemSnapshotList.items
|
||||
.map { it.value.first },
|
||||
)
|
||||
mangaList.itemSnapshotList.items
|
||||
.map { it.value.first }
|
||||
.let { bulkFavoriteScreenModel.reverseSelection(it) }
|
||||
},
|
||||
)
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -94,15 +94,12 @@ class BrowseRecommendsScreen(
|
|||
onSelectAll = {
|
||||
mangaList.itemSnapshotList.items
|
||||
.map { it.value.first }
|
||||
.forEach { manga ->
|
||||
bulkFavoriteScreenModel.select(manga)
|
||||
}
|
||||
.forEach { bulkFavoriteScreenModel.select(it) }
|
||||
},
|
||||
onReverseSelection = {
|
||||
bulkFavoriteScreenModel.reverseSelection(
|
||||
mangaList.itemSnapshotList.items
|
||||
.map { it.value.first },
|
||||
)
|
||||
mangaList.itemSnapshotList.items
|
||||
.map { it.value.first }
|
||||
.let { bulkFavoriteScreenModel.reverseSelection(it) }
|
||||
},
|
||||
)
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Reference in a new issue