diff --git a/src/main/java/ru/touchin/roboswag/components/extensions/Delegates.kt b/src/main/java/ru/touchin/roboswag/components/extensions/Delegates.kt new file mode 100644 index 0000000..c8e0538 --- /dev/null +++ b/src/main/java/ru/touchin/roboswag/components/extensions/Delegates.kt @@ -0,0 +1,16 @@ +package ru.touchin.roboswag.components.extensions + +import kotlin.properties.Delegates +import kotlin.properties.ObservableProperty +import kotlin.properties.ReadWriteProperty +import kotlin.reflect.KProperty + +/** + * Simple observable delegate only for notification of new value. + */ +inline fun Delegates.observable( + initialValue: T, + crossinline onChange: (newValue: T) -> Unit +): ReadWriteProperty = object : ObservableProperty(initialValue) { + override fun afterChange(property: KProperty<*>, oldValue: T, newValue: T) = onChange(newValue) +}