@@ -35,6 +35,8 @@ import com.owncloud.android.domain.utils.Event
3535import com.owncloud.android.extensions.ViewModelExt.runUseCaseWithResult
3636import com.owncloud.android.presentation.common.UIResult
3737import com.owncloud.android.providers.CoroutinesDispatcherProvider
38+ import kotlinx.coroutines.Job
39+ import kotlinx.coroutines.delay
3840import kotlinx.coroutines.flow.MutableSharedFlow
3941import kotlinx.coroutines.flow.MutableStateFlow
4042import kotlinx.coroutines.flow.SharedFlow
@@ -63,6 +65,8 @@ class SpaceMembersViewModel(
6365 private val _members : MutableSharedFlow <MembersUIState > = MutableSharedFlow ()
6466 val members: SharedFlow <MembersUIState > = _members
6567
68+ private var searchJob: Job ? = null
69+
6670 init {
6771 runUseCaseWithResult(
6872 coroutineDispatcher = coroutineDispatcherProvider.io,
@@ -94,7 +98,8 @@ class SpaceMembersViewModel(
9498 )
9599
96100 fun searchMembers (query : String ) {
97- viewModelScope.launch(coroutineDispatcherProvider.io) {
101+ searchJob?.cancel()
102+ searchJob = viewModelScope.launch(coroutineDispatcherProvider.io) {
98103 _members .emit(MembersUIState (members = emptyList(), isLoading = true , error = null ))
99104 when (val result = searchMembersUseCase(SearchMembersUseCase .Params (accountName, query))) {
100105 is UseCaseResult .Success -> _members .emit(MembersUIState (members = result.data, isLoading = false , error = null ))
0 commit comments