@@ -17,15 +17,19 @@ import de.davis.keygo.dashboard.presentation.model.DashboardUIEvent
1717import de.davis.keygo.dashboard.presentation.model.DashboardUIState
1818import kotlinx.collections.immutable.toImmutableList
1919import kotlinx.collections.immutable.toImmutableSet
20+ import kotlinx.coroutines.Dispatchers
2021import kotlinx.coroutines.ExperimentalCoroutinesApi
2122import kotlinx.coroutines.FlowPreview
2223import kotlinx.coroutines.flow.MutableStateFlow
2324import kotlinx.coroutines.flow.SharingStarted
24- import kotlinx.coroutines.flow.collectLatest
2525import kotlinx.coroutines.flow.combine
2626import kotlinx.coroutines.flow.debounce
2727import kotlinx.coroutines.flow.distinctUntilChanged
2828import kotlinx.coroutines.flow.flatMapLatest
29+ import kotlinx.coroutines.flow.flowOn
30+ import kotlinx.coroutines.flow.launchIn
31+ import kotlinx.coroutines.flow.onEach
32+ import kotlinx.coroutines.flow.onStart
2933import kotlinx.coroutines.flow.stateIn
3034import kotlinx.coroutines.flow.update
3135import kotlinx.coroutines.launch
@@ -95,23 +99,27 @@ class DashboardViewModel(
9599 selectedItemIds = selectedItemIds.toImmutableSet(),
96100 openedItemId = openedItemId,
97101 )
102+ }.onStart {
103+ runSearch()
98104 }.stateIn(
99105 scope = viewModelScope,
100106 started = SharingStarted .WhileSubscribed (5_000 ),
101107 initialValue = DashboardUIState (textFieldState)
102108 )
103109
104110 @OptIn(FlowPreview ::class )
105- suspend fun runSearch () {
111+ private fun runSearch () {
106112 snapshotFlow {
107113 textFieldState.text
108114 }.debounce(300 .milliseconds)
109115 .distinctUntilChanged()
110- .collectLatest { query ->
116+ .onEach { query ->
111117 searchResult.update {
112118 performSearch(query.toString())
113119 }
114120 }
121+ .flowOn(Dispatchers .Default )
122+ .launchIn(viewModelScope)
115123 }
116124
117125 private suspend fun performSearch (query : String ): List <VaultSearchResult > {
0 commit comments