Ahmed Sellami
10/04/2022, 8:50 AMopen class OneTimeObservable {
private var isInitialised = false
var state = false
set(value) {
field = value
isInitialised = true
if (oneTimeObservers.isNotEmpty()) {
notifyOneTimeObservers(value)
}
}
private val oneTimeObservers = mutableMapOf<String, (Boolean) -> Unit>()
fun whenReady(tag: String, listener: (Boolean) -> Unit): Boolean {
return if (!isInitialised) {
oneTimeObservers[tag] = listener
false
} else {
listener(state)
true
}
}
private fun notifyOneTimeObservers(boolean: Boolean) {
oneTimeObservers.forEach {
it.value(boolean)
}
oneTimeObservers.clear()
}
}
open class Observable {
var state = false
set(value) {
field = value
notifyObservers(value)
}
private val observers = mutableMapOf<String, (Boolean) -> Unit>()
fun addObserver(tag: String, observer: (Boolean) -> Unit) {
observers[tag] = observer
}
private fun notifyObservers(boolean: Boolean) {
observers.forEach {
it.value(boolean)
}
}
}
Ihoby Christian
10/05/2022, 7:08 AMAhmed Sellami
10/05/2022, 4:07 PM