@file:Suppress("unused") package io.legato.kazusa.utils import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.Fragment import androidx.lifecycle.LifecycleService import androidx.lifecycle.Observer import com.jeremyliao.liveeventbus.LiveEventBus import com.jeremyliao.liveeventbus.core.Observable inline fun eventObservable(tag: String): Observable { return LiveEventBus.get(tag, EVENT::class.java) } inline fun postEvent(tag: String, event: EVENT) { LiveEventBus.get(tag).post(event) } inline fun postEventDelay(tag: String, event: EVENT, delay: Long) { LiveEventBus.get(tag).postDelay(event, delay) } inline fun postEventOrderly(tag: String, event: EVENT) { LiveEventBus.get(tag).postOrderly(event) } inline fun AppCompatActivity.observeEvent( vararg tags: String, noinline observer: (EVENT) -> Unit ) { val o = Observer { observer(it) } tags.forEach { eventObservable(it).observe(this, o) } } inline fun AppCompatActivity.observeEventSticky( vararg tags: String, noinline observer: (EVENT) -> Unit ) { val o = Observer { observer(it) } tags.forEach { eventObservable(it).observeSticky(this, o) } } inline fun Fragment.observeEvent( vararg tags: String, noinline observer: (EVENT) -> Unit ) { val o = Observer { observer(it) } tags.forEach { eventObservable(it).observe(this, o) } } inline fun Fragment.observeEventSticky( vararg tags: String, noinline observer: (EVENT) -> Unit ) { val o = Observer { observer(it) } tags.forEach { eventObservable(it).observeSticky(this, o) } } inline fun LifecycleService.observeEvent( vararg tags: String, noinline observer: (EVENT) -> Unit ) { val o = Observer { observer(it) } tags.forEach { eventObservable(it).observe(this, o) } } inline fun LifecycleService.observeEventSticky( vararg tags: String, noinline observer: (EVENT) -> Unit ) { val o = Observer { observer(it) } tags.forEach { eventObservable(it).observeSticky(this, o) } }