From 6c0c6bd6f85ec8f1f66253b7cfe7079063765b45 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Sat, 18 Dec 2021 22:30:59 +0100 Subject: [PATCH] Add BroadcastReceiverLiveData class This is a suprise tool that will help us later --- .../lifecycle/BroadcastReceiverLiveData.kt | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 base/src/main/java/de/mm20/launcher2/lifecycle/BroadcastReceiverLiveData.kt 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