revanced-integrations/app/src/main/java/app/revanced/integrations/youtube/Event.kt

30 lines
650 B
Kotlin

package app.revanced.integrations.youtube
/**
* generic event provider class
*/
class Event<T> {
private val eventListeners = mutableSetOf<(T) -> Unit>()
operator fun plusAssign(observer: (T) -> Unit) {
addObserver(observer)
}
fun addObserver(observer: (T) -> Unit) {
eventListeners.add(observer)
}
operator fun minusAssign(observer: (T) -> Unit) {
removeObserver(observer)
}
fun removeObserver(observer: (T) -> Unit) {
eventListeners.remove(observer)
}
operator fun invoke(value: T) {
for (observer in eventListeners)
observer.invoke(value)
}
}