Skip to content

Commit 52a3f68

Browse files
committed
feat: Suggested tag list does not update while typing
1 parent b53431b commit 52a3f68

File tree

1 file changed

+13
-17
lines changed

1 file changed

+13
-17
lines changed

features/cells/src/main/java/com/wire/android/feature/cells/ui/tags/AddRemoveTagsViewModel.kt

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -63,29 +63,25 @@ class AddRemoveTagsViewModel @Inject constructor(
6363

6464
val disallowedChars = listOf(",", ";", "/", "\\", "\"", "\'", "<", ">")
6565

66-
private val _suggestedTags = MutableStateFlow<Set<String>>(emptySet())
67-
internal val suggestedTags =
68-
allTags.combine(addedTags) { all, added ->
69-
all.filter { it !in added }.toSet()
70-
}.stateIn(viewModelScope, SharingStarted.WhileSubscribed(), emptySet())
66+
private val tagQuery = MutableStateFlow("")
67+
68+
internal val suggestedTags = combine(allTags, addedTags, tagQuery) { all, added, query ->
69+
val filtered = if (query.isBlank()) all else all.filter { it.contains(query, ignoreCase = true) }
70+
filtered.filter { it !in added }.toSet()
71+
}.stateIn(viewModelScope, SharingStarted.WhileSubscribed(), emptySet())
7172

7273
init {
74+
75+
viewModelScope.launch {
76+
snapshotFlow { tagsTextState.text.toString() }
77+
.debounce(TYPING_DEBOUNCE_TIME)
78+
.collectLatest { tagQuery.value = it }
79+
}
80+
7381
viewModelScope.launch {
7482
getAllTagsUseCase().onSuccess { tags ->
7583
allTags.update { tags }
7684
}
77-
launch {
78-
snapshotFlow { tagsTextState.text.toString() }
79-
.debounce(TYPING_DEBOUNCE_TIME)
80-
.collectLatest { query ->
81-
val filtered = if (query.isBlank()) {
82-
allTags.value
83-
} else {
84-
allTags.value.filter { it.contains(query, ignoreCase = true) }.toSet()
85-
}
86-
_suggestedTags.value = filtered
87-
}
88-
}
8985
}
9086
}
9187

0 commit comments

Comments
 (0)