From 69e1e8820656c770fae8fd37984329bc9bd89727 Mon Sep 17 00:00:00 2001 From: darken Date: Mon, 17 Jan 2022 20:21:24 +0100 Subject: [PATCH] Don't launch worker on automatic mode if no devices are connected. --- .../main/ui/overview/OverviewFragmentVM.kt | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/darken/capod/main/ui/overview/OverviewFragmentVM.kt b/app/src/main/java/eu/darken/capod/main/ui/overview/OverviewFragmentVM.kt index bb2f01c4..d633acd8 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/overview/OverviewFragmentVM.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/overview/OverviewFragmentVM.kt @@ -4,6 +4,7 @@ import android.app.Activity import androidx.lifecycle.LiveData import androidx.lifecycle.SavedStateHandle import dagger.hilt.android.lifecycle.HiltViewModel +import eu.darken.capod.common.bluetooth.BluetoothManager2 import eu.darken.capod.common.coroutine.DispatcherProvider import eu.darken.capod.common.debug.autoreport.DebugSettings import eu.darken.capod.common.debug.logging.log @@ -42,6 +43,7 @@ class OverviewFragmentVM @Inject constructor( private val generalSettings: GeneralSettings, debugSettings: DebugSettings, private val upgradeRepo: UpgradeRepo, + private val bluetoothManager: BluetoothManager2, ) : ViewModel3(dispatcherProvider = dispatcherProvider) { val upgradeState = upgradeRepo.upgradeInfo.asLiveData2() @@ -58,9 +60,18 @@ class OverviewFragmentVM @Inject constructor( private val requiredPermissions: Flow> = permissionCheckTrigger .map { permissionTool.missingPermissions() } .onEach { - log(TAG) { "Missing permissions: $it" } - if (it.isEmpty() && generalSettings.monitorMode.value != MonitorMode.MANUAL) { - log(TAG) { "All permissions granted, starting monitor." } + if (it.isNotEmpty()) { + log(TAG) { "Missing permissions: $it" } + return@onEach + } + + val shouldStartMonitor = when (generalSettings.monitorMode.value) { + MonitorMode.MANUAL -> false + MonitorMode.AUTOMATIC -> bluetoothManager.connectedDevices().first().isNotEmpty() + MonitorMode.ALWAYS -> true + } + if (shouldStartMonitor) { + log(TAG) { "Starting monitor" } monitorControl.startMonitor() } }