From 0da842f6a3f2724094f9969f0cb2cac6ea13522e Mon Sep 17 00:00:00 2001 From: darken Date: Thu, 6 Jan 2022 21:21:26 +0100 Subject: [PATCH] Share flow subscriptions to the pod monitor --- .../main/java/eu/darken/capod/monitor/core/PodMonitor.kt | 7 ++++++- .../eu/darken/capod/monitor/core/worker/MonitorWorker.kt | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/eu/darken/capod/monitor/core/PodMonitor.kt b/app/src/main/java/eu/darken/capod/monitor/core/PodMonitor.kt index afffde46..1c041a3c 100644 --- a/app/src/main/java/eu/darken/capod/monitor/core/PodMonitor.kt +++ b/app/src/main/java/eu/darken/capod/monitor/core/PodMonitor.kt @@ -3,14 +3,17 @@ package eu.darken.capod.monitor.core import android.bluetooth.le.ScanSettings import eu.darken.capod.common.bluetooth.BleScanner import eu.darken.capod.common.bluetooth.BluetoothManager2 +import eu.darken.capod.common.coroutine.AppScope import eu.darken.capod.common.debug.logging.Logging.Priority.VERBOSE import eu.darken.capod.common.debug.logging.Logging.Priority.WARN import eu.darken.capod.common.debug.logging.log import eu.darken.capod.common.debug.logging.logTag +import eu.darken.capod.common.flow.replayingShare import eu.darken.capod.main.core.GeneralSettings import eu.darken.capod.main.core.ScannerMode import eu.darken.capod.pods.core.PodDevice import eu.darken.capod.pods.core.PodFactory +import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.* import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock @@ -24,7 +27,8 @@ class PodMonitor @Inject constructor( private val bleScanner: BleScanner, private val podFactory: PodFactory, private val generalSettings: GeneralSettings, - private val bluetoothManager: BluetoothManager2 + private val bluetoothManager: BluetoothManager2, + @AppScope private val appScope: CoroutineScope ) { private val deviceCache = mutableMapOf() @@ -84,6 +88,7 @@ class PodMonitor @Inject constructor( pods.values.sortedByDescending { it.rssi } } + .replayingShare(appScope) val mainDevice: Flow get() = devices.map { devices -> diff --git a/app/src/main/java/eu/darken/capod/monitor/core/worker/MonitorWorker.kt b/app/src/main/java/eu/darken/capod/monitor/core/worker/MonitorWorker.kt index 769fad89..ee833c66 100644 --- a/app/src/main/java/eu/darken/capod/monitor/core/worker/MonitorWorker.kt +++ b/app/src/main/java/eu/darken/capod/monitor/core/worker/MonitorWorker.kt @@ -144,6 +144,7 @@ class MonitorWorker @AssistedInject constructor( .onStart { setForeground(monitorNotifications.getForegroundInfo(null)) } + .distinctUntilChanged() .onEach { currentDevice -> notificationManager.notify( MonitorNotifications.NOTIFICATION_ID,