From d09361b0f75b56dd43f16f1eb67bbf5e73b5b89c Mon Sep 17 00:00:00 2001 From: Arkadii Ivanov Date: Thu, 8 Aug 2024 13:33:57 +0100 Subject: [PATCH] Added Store#labelsChannel API --- .../extensions/coroutines/StoreExt.kt | 42 ++++++- .../extensions/coroutines/LabelChannelTest.kt | 104 ++++++++++++++++++ .../extensions/coroutines/LabelFlowTest.kt | 77 +++++++++++++ 3 files changed, 222 insertions(+), 1 deletion(-) create mode 100644 mvikotlin-extensions-coroutines/src/commonTest/kotlin/com/arkivanov/mvikotlin/extensions/coroutines/LabelChannelTest.kt create mode 100644 mvikotlin-extensions-coroutines/src/commonTest/kotlin/com/arkivanov/mvikotlin/extensions/coroutines/LabelFlowTest.kt diff --git a/mvikotlin-extensions-coroutines/src/commonMain/kotlin/com/arkivanov/mvikotlin/extensions/coroutines/StoreExt.kt b/mvikotlin-extensions-coroutines/src/commonMain/kotlin/com/arkivanov/mvikotlin/extensions/coroutines/StoreExt.kt index 744869f2..52a99167 100644 --- a/mvikotlin-extensions-coroutines/src/commonMain/kotlin/com/arkivanov/mvikotlin/extensions/coroutines/StoreExt.kt +++ b/mvikotlin-extensions-coroutines/src/commonMain/kotlin/com/arkivanov/mvikotlin/extensions/coroutines/StoreExt.kt @@ -2,14 +2,19 @@ package com.arkivanov.mvikotlin.extensions.coroutines import com.arkivanov.mvikotlin.core.rx.observer import com.arkivanov.mvikotlin.core.store.Store +import com.arkivanov.mvikotlin.core.utils.ExperimentalMviKotlinApi import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.awaitCancellation +import kotlinx.coroutines.channels.Channel +import kotlinx.coroutines.channels.ReceiveChannel import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.FlowCollector import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.stateIn +import kotlinx.coroutines.launch import kotlin.coroutines.CoroutineContext /** @@ -69,7 +74,42 @@ private class StoreStateFlow( /** * Returns a [Flow] that emits [Store] labels. * - * Please note that the actual collection of the [Flow] may not be synchronous depending on [CoroutineContext] being used. + * Please note that the actual collection of the [Flow] may not be synchronous depending on [CoroutineContext] being used. */ val