Skip to content

Commit

Permalink
Limit items in each section
Browse files Browse the repository at this point in the history
  • Loading branch information
CrisBarreiro committed Apr 11, 2024
1 parent 4cbeb4c commit f36a6ca
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@ import io.reactivex.Observable
import javax.inject.Inject
import org.jetbrains.annotations.VisibleForTesting

const val maximumNumberOfSuggestions = 12
const val maximumNumberOfTopHits = 2
const val minimumNumberInSuggestionGroup = 5

interface AutoComplete {
fun autoComplete(query: String): Observable<AutoCompleteResult>

Expand Down Expand Up @@ -111,13 +115,21 @@ class AutoCompleteApi @Inject constructor(
is AutoCompleteBookmarkSuggestion -> it.isAllowedInTopHits
else -> false
}
}.take(2)

val filteredSearchResults = searchResults.filterNot { bookmarksResults.any { bookmark -> it.phrase == bookmark.phrase } }
}.take(maximumNumberOfTopHits)

val maxBottomSection = maximumNumberOfSuggestions - (topHits.size + minimumNumberInSuggestionGroup)
val filteredBookmarks =
bookmarksResults
.filter { bookmarkSuggestion -> topHits.none { it.phrase == bookmarkSuggestion.phrase } }
.take(maxBottomSection)
val maxSearchResults = maximumNumberOfSuggestions - (topHits.size + filteredBookmarks.size)
val filteredSearchResults = searchResults
.filter { searchSuggestion -> filteredBookmarks.none { it.phrase == searchSuggestion.phrase } }
.take(maxSearchResults)

AutoCompleteResult(
query = query,
suggestions = (topHits + filteredSearchResults + bookmarksResults.subtract(topHits.toSet())).distinctBy { it.phrase },
suggestions = (topHits + filteredSearchResults + filteredBookmarks).distinctBy { it.phrase },
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -208,9 +208,6 @@ class AutoCompleteApiTest {
assertTrue((value.suggestions[2] as AutoCompleteBookmarkSuggestion).isAllowedInTopHits)
assertTrue((value.suggestions[3] as AutoCompleteBookmarkSuggestion).isAllowedInTopHits)
assertFalse((value.suggestions[4] as AutoCompleteBookmarkSuggestion).isAllowedInTopHits)
assertFalse((value.suggestions[5] as AutoCompleteBookmarkSuggestion).isAllowedInTopHits)
assertFalse((value.suggestions[6] as AutoCompleteBookmarkSuggestion).isAllowedInTopHits)
assertFalse((value.suggestions[7] as AutoCompleteBookmarkSuggestion).isAllowedInTopHits)
}

@Test
Expand Down

0 comments on commit f36a6ca

Please sign in to comment.