summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--flow-mvi/src/main/java/foundation/e/flowmvi/feature/BaseFeature.kt10
1 files changed, 6 insertions, 4 deletions
diff --git a/flow-mvi/src/main/java/foundation/e/flowmvi/feature/BaseFeature.kt b/flow-mvi/src/main/java/foundation/e/flowmvi/feature/BaseFeature.kt
index 068cd8e..e3dd257 100644
--- a/flow-mvi/src/main/java/foundation/e/flowmvi/feature/BaseFeature.kt
+++ b/flow-mvi/src/main/java/foundation/e/flowmvi/feature/BaseFeature.kt
@@ -24,6 +24,7 @@ import foundation.e.flowmvi.Reducer
import foundation.e.flowmvi.SingleEventProducer
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.Job
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
@@ -104,11 +105,12 @@ open class BaseFeature<State : Any, in Action : Any, in Effect : Any, SingleEven
}
private suspend fun Flow<Action>.collectIntoHandler(
- callerCoroutineScope: CoroutineScope,
+ @Suppress("UNUSED_PARAMETER")callerCoroutineScope: CoroutineScope,
@Suppress("UNUSED_PARAMETER") logger: Logger
) {
+ val scope = CoroutineScope(Dispatchers.IO + Job())
onEach { action ->
- callerCoroutineScope.launch(Dispatchers.IO) {
+ scope.launch {
actor.invoke(_state.value, action)
.onEach { effect ->
mutex.withLock {
@@ -123,9 +125,9 @@ open class BaseFeature<State : Any, in Action : Any, in Effect : Any, SingleEven
}
}
}
- .launchIn(coroutineScope)
+ .launchIn(scope)
}
}
- .launchIn(callerCoroutineScope)
+ .launchIn(scope)
}
}