blob: 1382f0a3ec603c844bf8383c74110cb7927c95b7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
package org.pacien.tincapp.intent
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.support.v4.content.LocalBroadcastManager
import org.pacien.tincapp.context.App
/**
* @author pacien
*/
class BroadcastMapper(private val actionHandlers: Map<String, () -> Unit>) : BroadcastReceiver() {
private val broadcastManager = LocalBroadcastManager.getInstance(App.getContext())
private val intentFilter = actionHandlers.keys.fold(IntentFilter(), { filter, action -> filter.apply { addAction(action) } })
fun register() = broadcastManager.registerReceiver(this, intentFilter)
fun unregister() = broadcastManager.unregisterReceiver(this)
override fun onReceive(context: Context?, intent: Intent?) = actionHandlers[intent?.action]?.invoke() ?: Unit
}
|