Refactor SearchBarResultState.Initial and NoResultsFound to data objects

This commit is contained in:
ganfra
2026-07-23 16:15:02 +02:00
parent 075cca2d21
commit 9d427077f0
15 changed files with 38 additions and 54 deletions
@@ -55,7 +55,7 @@ class DefaultEmojiPickerPresenter(
override fun present(): EmojiPickerState {
val queryState = rememberTextFieldState()
var isSearchActive by remember { mutableStateOf(false) }
var emojiResults by remember { mutableStateOf<SearchBarResultState<ImmutableList<Emoji>>>(SearchBarResultState.Initial()) }
var emojiResults by remember { mutableStateOf<SearchBarResultState<ImmutableList<Emoji>>>(SearchBarResultState.Initial) }
val data by produceState(EmojiPickerData.Empty) {
val storeDeferred = async { emojibaseProvider.getStore() }
@@ -93,11 +93,7 @@ class DefaultEmojiPickerPresenter(
val searchQuery = queryState.text.toString()
LaunchedEffect(searchQuery, data) {
if (searchQuery.isEmpty() || data.allEmojis.isEmpty()) {
// `SearchBarResultState.Initial` has no `equals` override, so reassigning a new instance
// would trigger a redundant emission each time this effect re-runs while the query is empty.
if (emojiResults !is SearchBarResultState.Initial) {
emojiResults = SearchBarResultState.Initial()
}
emojiResults = SearchBarResultState.Initial
return@LaunchedEffect
}
delay(100.milliseconds)
@@ -62,7 +62,7 @@ internal fun aDefaultEmojiPickerState(
}.toImmutableList(),
searchQuery: String = "",
isSearchActive: Boolean = false,
searchResults: SearchBarResultState<ImmutableList<Emoji>> = SearchBarResultState.Initial(),
searchResults: SearchBarResultState<ImmutableList<Emoji>> = SearchBarResultState.Initial,
eventSink: (EmojiPickerEvent) -> Unit = {},
) = DefaultEmojiPickerState(
categories = categories,