Skip to content

Commit 76a2cac

Browse files
committed
fix: prevent multiple search requests when typing fast
1 parent ea4b868 commit 76a2cac

1 file changed

Lines changed: 6 additions & 1 deletion

File tree

owncloudApp/src/main/java/com/owncloud/android/presentation/spaces/members/SpaceMembersViewModel.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ import com.owncloud.android.domain.utils.Event
3535
import com.owncloud.android.extensions.ViewModelExt.runUseCaseWithResult
3636
import com.owncloud.android.presentation.common.UIResult
3737
import com.owncloud.android.providers.CoroutinesDispatcherProvider
38+
import kotlinx.coroutines.Job
39+
import kotlinx.coroutines.delay
3840
import kotlinx.coroutines.flow.MutableSharedFlow
3941
import kotlinx.coroutines.flow.MutableStateFlow
4042
import 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

Comments
 (0)