From f472a99aa434f8e35f7a6c58c7f8348801bdcbb7 Mon Sep 17 00:00:00 2001 From: Roger Yang Date: Mon, 21 Nov 2022 13:58:20 -0500 Subject: [PATCH] Bug 1800700 - Add default search suggest header --- .../compose/browser/awesomebar/internal/Suggestions.kt | 9 ++++----- .../feature/awesomebar/provider/SearchActionProvider.kt | 5 +++++ .../awesomebar/provider/SearchSuggestionProvider.kt | 8 ++++++++ docs/changelog.md | 3 +++ 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/android-components/components/compose/awesomebar/src/main/java/mozilla/components/compose/browser/awesomebar/internal/Suggestions.kt b/android-components/components/compose/awesomebar/src/main/java/mozilla/components/compose/browser/awesomebar/internal/Suggestions.kt index 4731d022b61c..46f9e418aa31 100644 --- a/android-components/components/compose/awesomebar/src/main/java/mozilla/components/compose/browser/awesomebar/internal/Suggestions.kt +++ b/android-components/components/compose/awesomebar/src/main/java/mozilla/components/compose/browser/awesomebar/internal/Suggestions.kt @@ -37,11 +37,10 @@ internal fun Suggestions( modifier = Modifier.testTag("mozac.awesomebar.suggestions"), ) { suggestions.forEach { (group, suggestions) -> - if (suggestions.isNotEmpty()) { - group.title?.let { title -> - item(group.id) { - SuggestionGroup(title, colors) - } + val title = group.title + if (suggestions.isNotEmpty() && !title.isNullOrEmpty()) { + item(group.id) { + SuggestionGroup(title, colors) } } diff --git a/android-components/components/feature/awesomebar/src/main/java/mozilla/components/feature/awesomebar/provider/SearchActionProvider.kt b/android-components/components/feature/awesomebar/src/main/java/mozilla/components/feature/awesomebar/provider/SearchActionProvider.kt index 42efeeebfab2..47759b236a0b 100644 --- a/android-components/components/feature/awesomebar/src/main/java/mozilla/components/feature/awesomebar/provider/SearchActionProvider.kt +++ b/android-components/components/feature/awesomebar/src/main/java/mozilla/components/feature/awesomebar/provider/SearchActionProvider.kt @@ -24,9 +24,14 @@ class SearchActionProvider( private val icon: Bitmap? = null, private val showDescription: Boolean = true, private val searchEngine: SearchEngine? = null, + private val suggestionsHeader: String? = null, ) : AwesomeBar.SuggestionProvider { override val id: String = java.util.UUID.randomUUID().toString() + override fun groupTitle(): String? { + return suggestionsHeader + } + override suspend fun onInputChanged(text: String): List { if (text.isBlank()) { return emptyList() diff --git a/android-components/components/feature/awesomebar/src/main/java/mozilla/components/feature/awesomebar/provider/SearchSuggestionProvider.kt b/android-components/components/feature/awesomebar/src/main/java/mozilla/components/feature/awesomebar/provider/SearchSuggestionProvider.kt index 331b81c07fe4..89d5a83ebcb8 100644 --- a/android-components/components/feature/awesomebar/src/main/java/mozilla/components/feature/awesomebar/provider/SearchSuggestionProvider.kt +++ b/android-components/components/feature/awesomebar/src/main/java/mozilla/components/feature/awesomebar/provider/SearchSuggestionProvider.kt @@ -37,6 +37,7 @@ class SearchSuggestionProvider private constructor( private val icon: Bitmap? = null, private val showDescription: Boolean = true, private val filterExactMatch: Boolean = false, + private val suggestionsHeader: String? = null, ) : AwesomeBar.SuggestionProvider { override val id: String = UUID.randomUUID().toString() @@ -99,6 +100,7 @@ class SearchSuggestionProvider private constructor( * @param filterExactMatch If true filters out suggestions that exactly match the entered text. * @param private When set to `true` then all requests to search engines will be made in private * mode. + * @param suggestionsHeader Optional suggestions header to display. */ constructor( context: Context, @@ -112,6 +114,7 @@ class SearchSuggestionProvider private constructor( showDescription: Boolean = true, filterExactMatch: Boolean = false, private: Boolean = false, + suggestionsHeader: String? = null, ) : this ( SearchSuggestionClient(context, store) { url -> fetch(fetchClient, url, private) }, searchUseCase, @@ -121,8 +124,13 @@ class SearchSuggestionProvider private constructor( icon, showDescription, filterExactMatch, + suggestionsHeader, ) + override fun groupTitle(): String? { + return suggestionsHeader + } + @Suppress("ReturnCount") override suspend fun onInputChanged(text: String): List { if (text.isEmpty()) { diff --git a/docs/changelog.md b/docs/changelog.md index df6d080c68da..454ba434ecad 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -53,6 +53,9 @@ permalink: /changelog/ * **browser-tabstray**: * `TabViewHolder` no longer checks if a thumbnail is in memory before retrieving a thumbnail from the `ImageLoader`. +* **feature-awesomebar** + * `SearchSuggestionProvider` and `SearchActionProvider` now have a new parameter `suggestionsHeader`, to add title to suggestions. + # 107.0.0 * [Commits](https://github.com/mozilla-mobile/android-components/compare/v106.0.0..v107.0.0) * [Milestone](https://github.com/mozilla-mobile/android-components/milestone/154?closed=1)