diff --git a/app/src/main/java/com/topjohnwu/magisk/ktx/XFlow.kt b/app/src/main/java/com/topjohnwu/magisk/ktx/XFlow.kt new file mode 100644 index 000000000..b53bd9f2d --- /dev/null +++ b/app/src/main/java/com/topjohnwu/magisk/ktx/XFlow.kt @@ -0,0 +1,13 @@ +package com.topjohnwu.magisk.ktx + +import kotlinx.coroutines.FlowPreview +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flatMapMerge +import kotlinx.coroutines.flow.flow + +@FlowPreview +inline fun Flow.concurrentMap(crossinline transform: suspend (T) -> R): Flow { + return flatMapMerge { value -> + flow { emit(transform(value)) } + } +} diff --git a/app/src/main/java/com/topjohnwu/magisk/ui/deny/DenyListViewModel.kt b/app/src/main/java/com/topjohnwu/magisk/ui/deny/DenyListViewModel.kt index d004913a0..293f832cf 100644 --- a/app/src/main/java/com/topjohnwu/magisk/ui/deny/DenyListViewModel.kt +++ b/app/src/main/java/com/topjohnwu/magisk/ui/deny/DenyListViewModel.kt @@ -9,6 +9,7 @@ import com.topjohnwu.magisk.arch.Queryable import com.topjohnwu.magisk.databinding.filterableListOf import com.topjohnwu.magisk.databinding.itemBindingOf import com.topjohnwu.magisk.di.AppContext +import com.topjohnwu.magisk.ktx.concurrentMap import com.topjohnwu.magisk.utils.Utils import com.topjohnwu.superuser.Shell import kotlinx.coroutines.* @@ -16,6 +17,7 @@ import kotlinx.coroutines.flow.* import java.util.* import kotlin.collections.ArrayList +@FlowPreview class DenyListViewModel : BaseViewModel(), Queryable { override val queryDelay = 0L @@ -46,14 +48,6 @@ class DenyListViewModel : BaseViewModel(), Queryable { it.bindExtra(BR.viewModel, this) } - @FlowPreview - private inline fun Flow.concurrentMap(crossinline transform: suspend (T) -> R): Flow { - return flatMapMerge { value -> - flow { emit(transform(value)) } - } - } - - @FlowPreview @SuppressLint("InlinedApi") override fun refresh() = viewModelScope.launch { if (!Utils.showSuperUser()) {