Zsolt.bertalan
02/29/2024, 2:03 PMZsolt.bertalan
02/29/2024, 2:04 PMpackage com.babestudios.companyinfouk.shared.ext
import com.arkivanov.decompose.Cancellation
import com.arkivanov.decompose.value.Value
import com.arkivanov.mvikotlin.core.store.Store
import com.arkivanov.mvikotlin.core.rx.Disposable
import com.arkivanov.mvikotlin.core.rx.observer
typealias ValueObserver<T> = (T) -> Unit
fun <T : Any> Store<*, T, *>.asValue(): Value<T> =
object : Value<T>() {
private var disposables = emptyMap<ValueObserver<T>, Disposable>()
override val value: T get() = state
override fun subscribe(observer: ValueObserver<T>): Cancellation {
val disposable = states(observer(onNext = observer))
this.disposables += observer to disposable
return Cancellation { disposable.dispose() }
}
}
Zsolt.bertalan
02/29/2024, 2:05 PMArkadii Ivanov
02/29/2024, 2:27 PMdisposables
map. See the impl here.Zsolt.bertalan
02/29/2024, 3:18 PM