diff --git a/app/src/main/java/org/hydev/wearsync/bles/BluetoothHandler.kt b/app/src/main/java/org/hydev/wearsync/bles/BluetoothHandler.kt index 91a8931..7ee316b 100644 --- a/app/src/main/java/org/hydev/wearsync/bles/BluetoothHandler.kt +++ b/app/src/main/java/org/hydev/wearsync/bles/BluetoothHandler.kt @@ -30,7 +30,8 @@ internal class BluetoothHandler private constructor(context: Context) { } } - val listeners = HashMap, MutableList<(Any) -> Unit>>() + val listeners: Map>, ArrayList<(Any) -> Unit>> = + decoders.associate { it::class to ArrayList() } @Suppress("UNCHECKED_CAST") inline fun > observe(crossinline cb: (M) -> Unit) { @@ -43,11 +44,9 @@ internal class BluetoothHandler private constructor(context: Context) { } private suspend fun BluePeri.observe(dec: IDecoder) { - val cls = dec::class - listeners[cls] = ArrayList() - + val lst = listeners[dec::class] ?: error("Decoder $dec is not in the listeners list") observe(dec) { - listeners[cls]?.forEach { cb -> cb(it) } + lst.forEach { cb -> cb(it) } } }