@@ -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