From a1dd6fe56ebdca4615a062285288fe9f31e42440 Mon Sep 17 00:00:00 2001 From: Cooltey Feng Date: Tue, 14 Apr 2026 16:42:52 -0700 Subject: [PATCH] Enable HybridSearch for design research testing --- .../java/org/wikipedia/search/HybridSearchAbCTest.kt | 5 ++--- .../java/org/wikipedia/search/SearchResultsFragment.kt | 2 +- .../java/org/wikipedia/search/SearchResultsViewModel.kt | 9 +++++++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/wikipedia/search/HybridSearchAbCTest.kt b/app/src/main/java/org/wikipedia/search/HybridSearchAbCTest.kt index 0db47f7b932..9f9231c8e0e 100644 --- a/app/src/main/java/org/wikipedia/search/HybridSearchAbCTest.kt +++ b/app/src/main/java/org/wikipedia/search/HybridSearchAbCTest.kt @@ -2,7 +2,6 @@ package org.wikipedia.search import org.wikipedia.analytics.ABTest import org.wikipedia.settings.Prefs -import org.wikipedia.settings.RemoteConfig class HybridSearchAbCTest : ABTest("apps_hybridsearch", GROUP_SIZE_3) { @@ -15,7 +14,7 @@ class HybridSearchAbCTest : ABTest("apps_hybridsearch", GROUP_SIZE_3) { } fun isTestActive(): Boolean { - return RemoteConfig.config.androidv1?.hybridSearchEnabled ?: true + return true } fun isTestGroupUser(): Boolean { @@ -31,7 +30,7 @@ class HybridSearchAbCTest : ABTest("apps_hybridsearch", GROUP_SIZE_3) { } private val supportedLanguages = listOf( - "en", "pt", "fr", "el" + "en" ) fun isHybridSearchEnabled(languageCode: String?): Boolean { diff --git a/app/src/main/java/org/wikipedia/search/SearchResultsFragment.kt b/app/src/main/java/org/wikipedia/search/SearchResultsFragment.kt index d4a3e31f5db..9b483a202eb 100644 --- a/app/src/main/java/org/wikipedia/search/SearchResultsFragment.kt +++ b/app/src/main/java/org/wikipedia/search/SearchResultsFragment.kt @@ -249,7 +249,7 @@ class SearchResultsFragment : Fragment() { viewModel.updateSearchTerm(if (term.isNullOrBlank()) "" else term) // If user changes the language, make sure to turn off hybrid search screen. - showHybridSearch = !resetHybridSearch && showHybridSearch && viewModel.isHybridSearchExperimentOn + showHybridSearch = viewModel.isHybridSearchExperimentOn if (showHybridSearch) { viewModel.resetHybridSearchState() viewModel.loadHybridSearchResults() diff --git a/app/src/main/java/org/wikipedia/search/SearchResultsViewModel.kt b/app/src/main/java/org/wikipedia/search/SearchResultsViewModel.kt index 79c1746f2a7..f5769cf0a2c 100644 --- a/app/src/main/java/org/wikipedia/search/SearchResultsViewModel.kt +++ b/app/src/main/java/org/wikipedia/search/SearchResultsViewModel.kt @@ -12,7 +12,9 @@ import kotlinx.coroutines.CancellationException import kotlinx.coroutines.CoroutineExceptionHandler import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.FlowPreview +import kotlinx.coroutines.Job import kotlinx.coroutines.async +import kotlinx.coroutines.delay import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asSharedFlow @@ -54,6 +56,7 @@ class SearchResultsViewModel : ViewModel() { val hybridSearchResultState = _hybridSearchResultState.asStateFlow() private var _refreshSearchResults = MutableStateFlow(0) + private var hybridSearchJob: Job? = null val getTestGroup get() = HybridSearchAbCTest().getGroupName() @@ -94,10 +97,12 @@ class SearchResultsViewModel : ViewModel() { @OptIn(FlowPreview::class) fun loadHybridSearchResults() { - viewModelScope.launch(CoroutineExceptionHandler { _, throwable -> + hybridSearchJob?.cancel() + hybridSearchJob = viewModelScope.launch(CoroutineExceptionHandler { _, throwable -> _hybridSearchResultState.value = UiState.Error(throwable) - }) { + }) { _hybridSearchResultState.value = UiState.Loading + delay(delayMillis) val lexicalBatchSize = 3 val semanticBatchSize = 3