Skip to content

Commit c7250ce

Browse files
authored
Merge pull request #5342 from wikimedia/search-results-lang
Respect the current language tab when providing the local results
2 parents 675b930 + 45cd9cd commit c7250ce

File tree

3 files changed

+10
-9
lines changed

3 files changed

+10
-9
lines changed

app/src/main/java/org/wikipedia/history/db/HistoryEntryWithImageDao.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import androidx.room.Dao
44
import androidx.room.Query
55
import androidx.room.RewriteQueriesToDropUnusedColumns
66
import org.apache.commons.lang3.StringUtils
7+
import org.wikipedia.dataclient.WikiSite
78
import org.wikipedia.history.HistoryEntry
89
import org.wikipedia.search.SearchResult
910
import org.wikipedia.search.SearchResults
@@ -26,7 +27,7 @@ interface HistoryEntryWithImageDao {
2627
@RewriteQueriesToDropUnusedColumns
2728
fun findEntriesBy(excludeSource1: Int, excludeSource2: Int, excludeSource3: Int, minTimeSpent: Int, limit: Int): List<HistoryEntryWithImage>
2829

29-
fun findHistoryItem(searchQuery: String): SearchResults {
30+
fun findHistoryItem(wikiSite: WikiSite, searchQuery: String): SearchResults {
3031
var normalizedQuery = StringUtils.stripAccents(searchQuery)
3132
if (normalizedQuery.isEmpty()) {
3233
return SearchResults()
@@ -35,7 +36,7 @@ interface HistoryEntryWithImageDao {
3536
.replace("%", "\\%").replace("_", "\\_")
3637

3738
val entries = findEntriesBySearchTerm("%$normalizedQuery%")
38-
.filter { StringUtil.fromHtml(it.displayTitle).contains(normalizedQuery, true) }
39+
.filter { wikiSite.languageCode == it.lang && StringUtil.fromHtml(it.displayTitle).contains(normalizedQuery, true) }
3940

4041
return if (entries.isEmpty()) SearchResults()
4142
else SearchResults(entries.take(3).map { SearchResult(toHistoryEntry(it).title, SearchResult.SearchResultType.HISTORY) }.toMutableList())

app/src/main/java/org/wikipedia/readinglist/db/ReadingListPageDao.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ interface ReadingListPageDao {
143143
)
144144
}
145145

146-
fun findPageForSearchQueryInAnyList(searchQuery: String): SearchResults {
146+
fun findPageForSearchQueryInAnyList(wikiSite: WikiSite, searchQuery: String): SearchResults {
147147
var normalizedQuery = StringUtils.stripAccents(searchQuery)
148148
if (normalizedQuery.isEmpty()) {
149149
return SearchResults()
@@ -152,7 +152,7 @@ interface ReadingListPageDao {
152152
.replace("%", "\\%").replace("_", "\\_")
153153

154154
val pages = findPageBySearchTerm("%$normalizedQuery%")
155-
.filter { StringUtil.fromHtml(it.accentInvariantTitle).contains(normalizedQuery, true) }
155+
.filter { wikiSite.languageCode == it.lang && StringUtil.fromHtml(it.accentInvariantTitle).contains(normalizedQuery, true) }
156156

157157
return if (pages.isEmpty()) SearchResults()
158158
else SearchResults(pages.take(2).map {

app/src/main/java/org/wikipedia/search/SearchResultsViewModel.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,11 @@ class SearchResultsViewModel : ViewModel() {
5959
if (searchTerm.length >= 2 && invokeSource != Constants.InvokeSource.PLACES) {
6060
withContext(Dispatchers.IO) {
6161
listOf(async {
62-
getSearchResultsFromTabs(searchTerm)
62+
getSearchResultsFromTabs(wikiSite, searchTerm)
6363
}, async {
64-
AppDatabase.instance.historyEntryWithImageDao().findHistoryItem(searchTerm)
64+
AppDatabase.instance.historyEntryWithImageDao().findHistoryItem(wikiSite, searchTerm)
6565
}, async {
66-
AppDatabase.instance.readingListPageDao().findPageForSearchQueryInAnyList(searchTerm)
66+
AppDatabase.instance.readingListPageDao().findPageForSearchQueryInAnyList(wikiSite, searchTerm)
6767
}).awaitAll().forEach {
6868
resultList.addAll(it.results.take(1))
6969
}
@@ -125,10 +125,10 @@ class SearchResultsViewModel : ViewModel() {
125125
return null
126126
}
127127

128-
private fun getSearchResultsFromTabs(searchTerm: String): SearchResults {
128+
private fun getSearchResultsFromTabs(wikiSite: WikiSite, searchTerm: String): SearchResults {
129129
WikipediaApp.instance.tabList.forEach { tab ->
130130
tab.backStackPositionTitle?.let {
131-
if (StringUtil.fromHtml(it.displayText).contains(searchTerm, true)) {
131+
if (wikiSite == it.wikiSite && StringUtil.fromHtml(it.displayText).contains(searchTerm, true)) {
132132
return SearchResults(mutableListOf(SearchResult(it, SearchResult.SearchResultType.TAB_LIST)))
133133
}
134134
}

0 commit comments

Comments
 (0)