https://kotlinlang.org logo
r

Robert Jaros

05/01/2020, 11:32 AM
I've create a small
ObservableStore
class like this:
Copy code
class ObservableStore<T>(state: T) : ObservableState<T> {
    private val observers = mutableListOf<(T) -> Unit>()

    var state: T by Delegates.observable(state) { _, _, new ->
        observers.forEach { it(new) }
    }

    override fun getState(): T {
        return state
    }

    override fun subscribe(observer: (T) -> Unit): () -> Unit {
        observers += observer
        observer(state)
        return {
            observers -= observer
        }
    }
}