From ee252b35b27322da69844900f9b19987720f202a Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Sat, 22 Apr 2023 09:58:51 -0400 Subject: [PATCH] Bug 1823085 - NoSuchElementException fix (#1420) (#1688) * Bug 1823085 - NoSuchElementException fix - the search engines list does not contain any element matching the conditions, so calling first on that list will throw an exception * Bug 1823085 - NoSuchElementException fix - the search engines list does not contain any element matching the conditions, so calling first on that list will throw an exception (cherry picked from commit 284d0be312bf95f317f218831530fd044ae0cb03) Co-authored-by: Alexandra Virvara <127850062+Alexandra-Virvara@users.noreply.github.com> --- .../search/RadioSearchEngineListPreference.kt | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/settings/search/RadioSearchEngineListPreference.kt b/app/src/main/java/org/mozilla/fenix/settings/search/RadioSearchEngineListPreference.kt index 5cd4d5546..66b5deb7f 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/search/RadioSearchEngineListPreference.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/search/RadioSearchEngineListPreference.kt @@ -171,16 +171,25 @@ class RadioSearchEngineListPreference @JvmOverloads constructor( ) { val selectedOrDefaultSearchEngine = context.components.core.store.state.search.selectedOrDefaultSearchEngine if (selectedOrDefaultSearchEngine == engine) { - val nextSearchEngine = if (context.settings().showUnifiedSearchFeature) { - context.components.core.store.state.search.searchEngines.first { - it.id != engine.id && (it.isGeneral || it.type == SearchEngine.Type.CUSTOM) - } - } else { - context.components.core.store.state.search.searchEngines.first { - it.id != engine.id + val nextSearchEngine = + if (context.settings().showUnifiedSearchFeature) { + context.components.core.store.state.search.searchEngines.firstOrNull { + it.id != engine.id && (it.isGeneral || it.type == SearchEngine.Type.CUSTOM) + } + ?: context.components.core.store.state.search.searchEngines.firstOrNull { + it.id != engine.id + } + } else { + context.components.core.store.state.search.searchEngines.firstOrNull { + it.id != engine.id + } } + + nextSearchEngine?.let { + context.components.useCases.searchUseCases.selectSearchEngine( + nextSearchEngine, + ) } - context.components.useCases.searchUseCases.selectSearchEngine(nextSearchEngine) } context.components.useCases.searchUseCases.removeSearchEngine(engine)