diff --git a/base/src/main/java/de/mm20/launcher2/lifecycle/BroadcastReceiverLiveData.kt b/base/src/main/java/de/mm20/launcher2/lifecycle/BroadcastReceiverLiveData.kt new file mode 100644 index 00000000..fd4f753a --- /dev/null +++ b/base/src/main/java/de/mm20/launcher2/lifecycle/BroadcastReceiverLiveData.kt @@ -0,0 +1,33 @@ +package de.mm20.launcher2.lifecycle + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import androidx.lifecycle.LiveData + +class BroadcastReceiverLiveData( + context: Context, + private val intentFilter: IntentFilter, + private val transformFunction: (Context, Intent) -> T +): LiveData() { + + private val context = context.applicationContext + private val receiver = object: BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + val newValue = transformFunction(context, intent) + postValue(newValue) + } + + } + + override fun onActive() { + super.onActive() + context.registerReceiver(receiver, intentFilter) + } + + override fun onInactive() { + super.onInactive() + context.unregisterReceiver(receiver) + } +} \ No newline at end of file