Vaibhav Jaiswal
01/02/2024, 7:22 AMArkadii Ivanov
01/02/2024, 3:36 PMfun <T : Any> Value<T>.toStateFlow(): StateFlow<T> = ValueStateFlow(this)
private class ValueStateFlow<out T : Any>(private val source: Value<T>) : StateFlow<T> {
override val value: T
get() = source.value
override val replayCache: List<T>
get() = listOf(source.value)
override suspend fun collect(collector: FlowCollector<T>): Nothing {
val flow = MutableStateFlow(source.value)
val disposable = source.observe { flow.value = it }
try {
flow.collect(collector)
} finally {
disposable.cancel()
}
}
}
Vaibhav Jaiswal
01/02/2024, 3:39 PMDjuro
02/28/2024, 12:34 PMArkadii Ivanov
02/28/2024, 1:44 PM