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 0c1fdb802..0547a6bbc 100644 --- a/app/src/main/java/eu/kanade/presentation/browse/GlobalSearchScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/browse/GlobalSearchScreen.kt @@ -56,10 +56,9 @@ fun GlobalSearchScreen( state.filteredItems.forEach { (_, result) -> when (result) { is SearchItemResult.Success -> { - result.result.map{manga -> - + result.result.forEach { manga -> if (!bulkFavoriteState.selection.contains(manga)) - bulkFavoriteScreenModel.toggleSelection(manga) + bulkFavoriteScreenModel.select(manga) } } else -> {} diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/BulkFavoriteScreenModel.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/BulkFavoriteScreenModel.kt index 491d057cb..a043b936d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/BulkFavoriteScreenModel.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/BulkFavoriteScreenModel.kt @@ -84,12 +84,23 @@ class BulkFavoriteScreenModel( mutableState.update { it.copy(selection = persistentListOf()) } } - fun toggleSelection(manga: Manga) { + fun select(manga: Manga) { + toggleSelection(manga, toSelectedState = true) + } + + fun unselect(manga: Manga) { + toggleSelection(manga, toSelectedState = false) + } + + /** + * @param toSelectedState set to true to only Select, set to false to only Unselect + */ + fun toggleSelection(manga: Manga, toSelectedState: Boolean? = null) { mutableState.update { state -> val newSelection = state.selection.mutate { list -> - if (list.fastAny { it.id == manga.id }) { + if (toSelectedState != true && list.fastAny { it.id == manga.id }) { list.removeAll { it.id == manga.id } - } else { + } else if (toSelectedState != false) { list.add(manga) } }