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 3613b01ee..e2b630174 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 @@ -1031,7 +1031,9 @@ class LibraryPresenter( add(manga) return@apply } - val items = loadedManga[manga.category].orEmpty().fastMap { it.libraryManga } + val items = loadedManga[manga.category].orEmpty().apply { + if (searchQuery.isNullOrBlank()) toList() else filter { it.filter(searchQuery!!) } + }.fastMap { it.libraryManga } val lastMangaIndex = items.indexOf(lastSelected) val curMangaIndex = items.indexOf(manga) val selectedIds = fastMap { it.id } @@ -1045,8 +1047,10 @@ class LibraryPresenter( fun selectAll(index: Int) { state.selection = state.selection.toMutableList().apply { - val categoryId = categories[index].id - val items = loadedManga[categoryId].orEmpty().fastMap { it.libraryManga } + val categoryId = categories.getOrNull(index)?.id ?: -1 + val items = loadedManga[categoryId].orEmpty().apply { + if (searchQuery.isNullOrBlank()) toList() else filter { it.filter(searchQuery!!) } + }.fastMap { it.libraryManga } val selectedIds = fastMap { it.id } val newSelections = items.filterNot { it.id in selectedIds } addAll(newSelections) @@ -1056,7 +1060,9 @@ class LibraryPresenter( fun invertSelection(index: Int) { state.selection = selection.toMutableList().apply { val categoryId = categories[index].id - val items = loadedManga[categoryId].orEmpty().fastMap { it.libraryManga } + val items = loadedManga[categoryId].orEmpty().apply { + if (searchQuery.isNullOrBlank()) toList() else filter { it.filter(searchQuery!!) } + }.fastMap { it.libraryManga } val selectedIds = fastMap { it.id } val (toRemove, toAdd) = items.partition { it.id in selectedIds } val toRemoveIds = toRemove.fastMap { it.id }