From 91b17ef4a2fd751f46fb5a9ebf9732c159f08c27 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Thu, 14 Jul 2022 14:23:04 +0300 Subject: [PATCH] Fix global search parallelism --- .../search/ui/multi/MultiSearchViewModel.kt | 40 +++++++++---------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/org/koitharu/kotatsu/search/ui/multi/MultiSearchViewModel.kt b/app/src/main/java/org/koitharu/kotatsu/search/ui/multi/MultiSearchViewModel.kt index 617352978..b2ababf6d 100644 --- a/app/src/main/java/org/koitharu/kotatsu/search/ui/multi/MultiSearchViewModel.kt +++ b/app/src/main/java/org/koitharu/kotatsu/search/ui/multi/MultiSearchViewModel.kt @@ -89,26 +89,25 @@ class MultiSearchViewModel( } } - private suspend fun searchImpl(q: String) { + private suspend fun searchImpl(q: String) = coroutineScope { val sources = settings.getMangaSources(includeHidden = false) val dispatcher = Dispatchers.Default.limitedParallelism(MAX_PARALLELISM) - val deferredList = coroutineScope { - sources.map { source -> - async(dispatcher) { - runCatching { - val list = MangaRepository(source).getList(offset = 0, query = q) - .toUi(ListMode.GRID) - if (list.isNotEmpty()) { - MultiSearchListModel(source, list.size > MIN_HAS_MORE_ITEMS, list) - } else { - null - } - }.onFailure { - it.printStackTraceDebug() + val deferredList = sources.map { source -> + async(dispatcher) { + runCatching { + val list = MangaRepository(source).getList(offset = 0, query = q) + .toUi(ListMode.GRID) + if (list.isNotEmpty()) { + MultiSearchListModel(source, list.size > MIN_HAS_MORE_ITEMS, list) + } else { + null } + }.onFailure { + it.printStackTraceDebug() } } } + val errors = ArrayList() for (deferred in deferredList) { deferred.await() @@ -120,13 +119,12 @@ class MultiSearchViewModel( errors.add(it) } } - if (listData.value.isNotEmpty()) { - return - } - when (errors.size) { - 0 -> Unit - 1 -> throw errors[0] - else -> throw CompositeException(errors) + if (listData.value.isEmpty()) { + when (errors.size) { + 0 -> Unit + 1 -> throw errors[0] + else -> throw CompositeException(errors) + } } } } \ No newline at end of file