Skip to content

Commit 417477b

Browse files
authored
Merge pull request #14 from algolia/refactor/optionalSuggestions
refactor: optional suggestions
2 parents 94ae9b5 + 0774a7d commit 417477b

File tree

4 files changed

+22
-12
lines changed

4 files changed

+22
-12
lines changed

ui/src/main/kotlin/com/algolia/instantsearch/voice/ui/VoiceAndroidView.kt

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,15 @@ class VoiceAndroidView(
2424
}
2525

2626
override fun setSuggestions(suggestions: Array<out String>) {
27-
val formattedSuggestions = suggestions.joinToString("") { formatterSuggestion(it) }
28-
val html = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
29-
Html.fromHtml(formattedSuggestions, Html.FROM_HTML_MODE_LEGACY)
30-
} else {
31-
Html.fromHtml(formattedSuggestions)
27+
view.suggestions?.let {
28+
val formattedSuggestions = suggestions.joinToString("") { formatterSuggestion(it) }
29+
val html = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
30+
Html.fromHtml(formattedSuggestions, Html.FROM_HTML_MODE_LEGACY)
31+
} else {
32+
Html.fromHtml(formattedSuggestions)
33+
}
34+
it.text = html
3235
}
33-
34-
view.suggestions.text = html
3536
}
3637

3738
override fun setTitle(title: VoiceUI.Title) {
@@ -47,7 +48,7 @@ class VoiceAndroidView(
4748
}
4849

4950
override fun setSuggestionVisibility(isVisible: Boolean) {
50-
view.voiceInput.suggestions.visibility = if (isVisible) View.VISIBLE else View.INVISIBLE
51+
view.voiceInput.suggestions?.visibility = if (isVisible) View.VISIBLE else View.INVISIBLE
5152
}
5253

5354
override fun setHintVisibility(isVisible: Boolean) {

ui/src/main/kotlin/com/algolia/instantsearch/voice/ui/VoiceInputDialogFragment.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,14 @@ class VoiceInputDialogFragment : DialogFragment() {
7272
VoiceMicrophone.State.Deactivated -> speechRecognizer.start()
7373
}
7474
})
75-
suggestions?.let(androidView::setSuggestions)
75+
suggestions?.let {
76+
androidView.setSuggestions(it)
77+
androidView.setSubtitle(resources.getString(R.string.input_subtitle_listening))
78+
}
7679
speechRecognizer.setRecognitionListener(presenter)
7780
speechRecognizer.stateListener = presenter
7881
}
7982

80-
8183
override fun onResume() {
8284
super.onResume()
8385
if (autoStart) start()

ui/src/main/kotlin/com/algolia/instantsearch/voice/ui/VoicePresenter.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,15 @@ class VoicePresenter(
1616
onResults(results.resultsRecognition)
1717
}
1818

19+
private var hasPartialResults: Boolean = false
20+
1921
override fun onPartialResults(partialResults: Bundle) {
2022
val matches = partialResults.resultsRecognition
2123

2224
ui.setSuggestionVisibility(false)
2325
ui.setTitle(VoiceUI.Title.Listen)
2426
matches.firstOrNull()?.capitalize()?.let(ui::setSubtitle)
27+
hasPartialResults = true
2528
}
2629

2730
override fun isListening(isListening: Boolean) {
@@ -33,7 +36,9 @@ class VoicePresenter(
3336
ui.setSubtitle(VoiceUI.Subtitle.Listen)
3437
ui.setMicrophoneState(VoiceMicrophone.State.Activated)
3538
} else {
36-
ui.setHintVisibility(true)
39+
if (!hasPartialResults) {
40+
ui.setHintVisibility(true)
41+
}
3742
ui.setRippleActivity(false)
3843
ui.setMicrophoneState(VoiceMicrophone.State.Deactivated)
3944
}
@@ -46,6 +51,7 @@ class VoicePresenter(
4651
ui.setMicrophoneState(VoiceMicrophone.State.Deactivated)
4752
ui.setTitle(VoiceUI.Title.Error)
4853
ui.setSubtitle(VoiceUI.Subtitle.Error)
54+
hasPartialResults = false
4955
}
5056

5157
override fun onReadyForSpeech(params: Bundle) = Unit

ui/src/main/res/values/strings.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
<resources>
22
<!-- region VoiceInputDialogFragment -->
33
<string name="input_title_listening">Listening…</string>
4-
<string name="input_subtitle_listening">Say something like:</string>
4+
<string name="input_subtitle_listening">Say something</string>
5+
<string name="input_subtitle_suggestions">Say something like:</string>
56
<string name="input_title_error">Sorry, we didn\'t quite get that.</string>
67
<string name="input_subtitle_error">Try repeating your request.</string>
78
<string name="input_hint_error">Try again</string>

0 commit comments

Comments
 (0)