From edcc5bf6bceb7ddf20ceb84d60cec8a1ed7fb981 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sylwester=20Zieli=C5=84ski?= Date: Wed, 11 May 2022 14:43:57 +0200 Subject: [PATCH] Fix new Toolbar --- .../android/service/BleManagerStatus.kt | 19 +++++++++++-------- .../service/ConnectionObserverAdapter.kt | 13 +++++++------ .../nordicsemi/android/bps/view/BPSScreen.kt | 2 +- .../android/cgms/repository/CGMRepository.kt | 3 ++- .../nordicsemi/android/cgms/view/CGMScreen.kt | 2 +- .../android/csc/repository/CSCRepository.kt | 3 ++- .../nordicsemi/android/csc/view/CSCScreen.kt | 2 +- .../android/gls/main/view/GLSScreen.kt | 2 +- .../android/hrs/service/HRSRepository.kt | 3 ++- .../nordicsemi/android/hrs/view/HRSScreen.kt | 2 +- .../android/hts/repository/HTSRepository.kt | 3 ++- .../nordicsemi/android/hts/view/HTSScreen.kt | 2 +- .../android/prx/repository/PRXRepository.kt | 2 +- .../nordicsemi/android/prx/view/PRXScreen.kt | 2 +- .../android/rscs/repository/RSCSRepository.kt | 5 ++--- .../android/rscs/view/RSCSScreen.kt | 2 +- .../android/uart/repository/UARTRepository.kt | 1 - .../android/uart/view/UARTScreen.kt | 2 +- 18 files changed, 38 insertions(+), 32 deletions(-) diff --git a/lib_service/src/main/java/no/nordicsemi/android/service/BleManagerStatus.kt b/lib_service/src/main/java/no/nordicsemi/android/service/BleManagerStatus.kt index ebd7e812..f18adee5 100644 --- a/lib_service/src/main/java/no/nordicsemi/android/service/BleManagerStatus.kt +++ b/lib_service/src/main/java/no/nordicsemi/android/service/BleManagerStatus.kt @@ -3,7 +3,7 @@ package no.nordicsemi.android.service import android.annotation.SuppressLint import android.bluetooth.BluetoothDevice -sealed class BleManagerResult { +sealed interface BleManagerResult { fun isRunning(): Boolean { return this is SuccessResult @@ -18,15 +18,18 @@ sealed class BleManagerResult { } } -class IdleResult : BleManagerResult() -class ConnectingResult : BleManagerResult() -data class SuccessResult(val device: BluetoothDevice, val data: T) : BleManagerResult() { +sealed class DeviceHolder(val device: BluetoothDevice) { @SuppressLint("MissingPermission") fun deviceName(): String = device.name ?: device.address + } -class LinkLossResult(val data: T) : BleManagerResult() -class DisconnectedResult : BleManagerResult() -class UnknownErrorResult : BleManagerResult() -class MissingServiceResult : BleManagerResult() +class IdleResult : BleManagerResult +class ConnectingResult(device: BluetoothDevice) : DeviceHolder(device), BleManagerResult +class SuccessResult(device: BluetoothDevice, val data: T) : DeviceHolder(device), BleManagerResult + +class LinkLossResult(device: BluetoothDevice, val data: T) : DeviceHolder(device), BleManagerResult +class DisconnectedResult(device: BluetoothDevice) : DeviceHolder(device), BleManagerResult +class UnknownErrorResult(device: BluetoothDevice) : DeviceHolder(device), BleManagerResult +class MissingServiceResult(device: BluetoothDevice) : DeviceHolder(device), BleManagerResult diff --git a/lib_service/src/main/java/no/nordicsemi/android/service/ConnectionObserverAdapter.kt b/lib_service/src/main/java/no/nordicsemi/android/service/ConnectionObserverAdapter.kt index dff8cda7..c61477d5 100644 --- a/lib_service/src/main/java/no/nordicsemi/android/service/ConnectionObserverAdapter.kt +++ b/lib_service/src/main/java/no/nordicsemi/android/service/ConnectionObserverAdapter.kt @@ -10,7 +10,7 @@ class ConnectionObserverAdapter : ConnectionObserver { private val TAG = "BLE-CONNECTION" - private val _status = MutableStateFlow>(ConnectingResult()) + private val _status = MutableStateFlow>(IdleResult()) val status = _status.asStateFlow() private var lastValue: T? = null @@ -21,6 +21,7 @@ class ConnectionObserverAdapter : ConnectionObserver { override fun onDeviceConnecting(device: BluetoothDevice) { Log.d(TAG, "onDeviceConnecting()") + _status.value = ConnectingResult(device) } override fun onDeviceConnected(device: BluetoothDevice) { @@ -29,7 +30,7 @@ class ConnectionObserverAdapter : ConnectionObserver { override fun onDeviceFailedToConnect(device: BluetoothDevice, reason: Int) { Log.d(TAG, "onDeviceFailedToConnect(), reason: $reason") - _status.value = MissingServiceResult() + _status.value = MissingServiceResult(device) } override fun onDeviceReady(device: BluetoothDevice) { @@ -44,10 +45,10 @@ class ConnectionObserverAdapter : ConnectionObserver { override fun onDeviceDisconnected(device: BluetoothDevice, reason: Int) { Log.d(TAG, "onDeviceDisconnected(), reason: $reason") _status.value = when (reason) { - ConnectionObserver.REASON_NOT_SUPPORTED -> MissingServiceResult() - ConnectionObserver.REASON_LINK_LOSS -> LinkLossResult(getData()!!) - ConnectionObserver.REASON_SUCCESS -> DisconnectedResult() - else -> UnknownErrorResult() + ConnectionObserver.REASON_NOT_SUPPORTED -> MissingServiceResult(device) + ConnectionObserver.REASON_LINK_LOSS -> LinkLossResult(device, getData()!!) + ConnectionObserver.REASON_SUCCESS -> DisconnectedResult(device) + else -> UnknownErrorResult(device) } } diff --git a/profile_bps/src/main/java/no/nordicsemi/android/bps/view/BPSScreen.kt b/profile_bps/src/main/java/no/nordicsemi/android/bps/view/BPSScreen.kt index ce7c0a17..a634a6ad 100644 --- a/profile_bps/src/main/java/no/nordicsemi/android/bps/view/BPSScreen.kt +++ b/profile_bps/src/main/java/no/nordicsemi/android/bps/view/BPSScreen.kt @@ -51,7 +51,7 @@ fun BPSScreen() { @Composable private fun AppBar(state: BPSViewState, navigateUp: () -> Unit, viewModel: BPSViewModel) { val toolbarName = (state as? WorkingState)?.let { - (it.result as? SuccessResult)?.deviceName() + (it.result as? DeviceHolder)?.deviceName() } if (toolbarName == null) { diff --git a/profile_cgms/src/main/java/no/nordicsemi/android/cgms/repository/CGMRepository.kt b/profile_cgms/src/main/java/no/nordicsemi/android/cgms/repository/CGMRepository.kt index 57ed9ae3..3fbde4bb 100644 --- a/profile_cgms/src/main/java/no/nordicsemi/android/cgms/repository/CGMRepository.kt +++ b/profile_cgms/src/main/java/no/nordicsemi/android/cgms/repository/CGMRepository.kt @@ -13,6 +13,7 @@ import no.nordicsemi.android.logger.ToolboxLogger import no.nordicsemi.android.logger.ToolboxLoggerFactory import no.nordicsemi.android.service.BleManagerResult import no.nordicsemi.android.service.ConnectingResult +import no.nordicsemi.android.service.IdleResult import no.nordicsemi.android.service.ServiceManager import no.nordicsemi.ui.scanner.DiscoveredBluetoothDevice import javax.inject.Inject @@ -28,7 +29,7 @@ class CGMRepository @Inject constructor( private var manager: CGMManager? = null private var logger: ToolboxLogger? = null - private val _data = MutableStateFlow>(ConnectingResult()) + private val _data = MutableStateFlow>(IdleResult()) internal val data = _data.asStateFlow() val isRunning = data.map { it.isRunning() } diff --git a/profile_cgms/src/main/java/no/nordicsemi/android/cgms/view/CGMScreen.kt b/profile_cgms/src/main/java/no/nordicsemi/android/cgms/view/CGMScreen.kt index 2246958c..130961b4 100644 --- a/profile_cgms/src/main/java/no/nordicsemi/android/cgms/view/CGMScreen.kt +++ b/profile_cgms/src/main/java/no/nordicsemi/android/cgms/view/CGMScreen.kt @@ -50,7 +50,7 @@ fun CGMScreen() { @Composable private fun AppBar(state: CGMViewState, navigateUp: () -> Unit, viewModel: CGMViewModel) { val toolbarName = (state as? WorkingState)?.let { - (it.result as? SuccessResult)?.deviceName() + (it.result as? DeviceHolder)?.deviceName() } if (toolbarName == null) { diff --git a/profile_csc/src/main/java/no/nordicsemi/android/csc/repository/CSCRepository.kt b/profile_csc/src/main/java/no/nordicsemi/android/csc/repository/CSCRepository.kt index 3372b2e6..2bf9a576 100644 --- a/profile_csc/src/main/java/no/nordicsemi/android/csc/repository/CSCRepository.kt +++ b/profile_csc/src/main/java/no/nordicsemi/android/csc/repository/CSCRepository.kt @@ -14,6 +14,7 @@ import no.nordicsemi.android.logger.ToolboxLogger import no.nordicsemi.android.logger.ToolboxLoggerFactory import no.nordicsemi.android.service.BleManagerResult import no.nordicsemi.android.service.ConnectingResult +import no.nordicsemi.android.service.IdleResult import no.nordicsemi.android.service.ServiceManager import no.nordicsemi.ui.scanner.DiscoveredBluetoothDevice import javax.inject.Inject @@ -29,7 +30,7 @@ class CSCRepository @Inject constructor( private var manager: CSCManager? = null private var logger: ToolboxLogger? = null - private val _data = MutableStateFlow>(ConnectingResult()) + private val _data = MutableStateFlow>(IdleResult()) internal val data = _data.asStateFlow() val isRunning = data.map { it.isRunning() } diff --git a/profile_csc/src/main/java/no/nordicsemi/android/csc/view/CSCScreen.kt b/profile_csc/src/main/java/no/nordicsemi/android/csc/view/CSCScreen.kt index f9ec79d6..9f787778 100644 --- a/profile_csc/src/main/java/no/nordicsemi/android/csc/view/CSCScreen.kt +++ b/profile_csc/src/main/java/no/nordicsemi/android/csc/view/CSCScreen.kt @@ -50,7 +50,7 @@ fun CSCScreen() { @Composable private fun AppBar(state: CSCViewState, navigateUp: () -> Unit, viewModel: CSCViewModel) { val toolbarName = (state.cscManagerState as? WorkingState)?.let { - (it.result as? SuccessResult)?.deviceName() + (it.result as? DeviceHolder)?.deviceName() } if (toolbarName == null) { diff --git a/profile_gls/src/main/java/no/nordicsemi/android/gls/main/view/GLSScreen.kt b/profile_gls/src/main/java/no/nordicsemi/android/gls/main/view/GLSScreen.kt index 6b4e90f9..86faf7b0 100644 --- a/profile_gls/src/main/java/no/nordicsemi/android/gls/main/view/GLSScreen.kt +++ b/profile_gls/src/main/java/no/nordicsemi/android/gls/main/view/GLSScreen.kt @@ -50,7 +50,7 @@ fun GLSScreen() { @Composable private fun AppBar(state: GLSViewState, navigateUp: () -> Unit, viewModel: GLSViewModel) { val toolbarName = (state as? WorkingState)?.let { - (it.result as? SuccessResult)?.deviceName() + (it.result as? DeviceHolder)?.deviceName() } if (toolbarName == null) { diff --git a/profile_hrs/src/main/java/no/nordicsemi/android/hrs/service/HRSRepository.kt b/profile_hrs/src/main/java/no/nordicsemi/android/hrs/service/HRSRepository.kt index 312485b7..7c0a207d 100644 --- a/profile_hrs/src/main/java/no/nordicsemi/android/hrs/service/HRSRepository.kt +++ b/profile_hrs/src/main/java/no/nordicsemi/android/hrs/service/HRSRepository.kt @@ -13,6 +13,7 @@ import no.nordicsemi.android.logger.ToolboxLogger import no.nordicsemi.android.logger.ToolboxLoggerFactory import no.nordicsemi.android.service.BleManagerResult import no.nordicsemi.android.service.ConnectingResult +import no.nordicsemi.android.service.IdleResult import no.nordicsemi.android.service.ServiceManager import no.nordicsemi.ui.scanner.DiscoveredBluetoothDevice import javax.inject.Inject @@ -28,7 +29,7 @@ class HRSRepository @Inject constructor( private var manager: HRSManager? = null private var logger: ToolboxLogger? = null - private val _data = MutableStateFlow>(ConnectingResult()) + private val _data = MutableStateFlow>(IdleResult()) internal val data = _data.asStateFlow() val isRunning = data.map { it.isRunning() } diff --git a/profile_hrs/src/main/java/no/nordicsemi/android/hrs/view/HRSScreen.kt b/profile_hrs/src/main/java/no/nordicsemi/android/hrs/view/HRSScreen.kt index 87505533..2c8dd7f3 100644 --- a/profile_hrs/src/main/java/no/nordicsemi/android/hrs/view/HRSScreen.kt +++ b/profile_hrs/src/main/java/no/nordicsemi/android/hrs/view/HRSScreen.kt @@ -50,7 +50,7 @@ fun HRSScreen() { @Composable private fun AppBar(state: HRSViewState, navigateUp: () -> Unit, viewModel: HRSViewModel) { val toolbarName = (state as? WorkingState)?.let { - (it.result as? SuccessResult)?.deviceName() + (it.result as? DeviceHolder)?.deviceName() } if (toolbarName == null) { diff --git a/profile_hts/src/main/java/no/nordicsemi/android/hts/repository/HTSRepository.kt b/profile_hts/src/main/java/no/nordicsemi/android/hts/repository/HTSRepository.kt index cd22b37d..4b629df3 100644 --- a/profile_hts/src/main/java/no/nordicsemi/android/hts/repository/HTSRepository.kt +++ b/profile_hts/src/main/java/no/nordicsemi/android/hts/repository/HTSRepository.kt @@ -13,6 +13,7 @@ import no.nordicsemi.android.logger.ToolboxLogger import no.nordicsemi.android.logger.ToolboxLoggerFactory import no.nordicsemi.android.service.BleManagerResult import no.nordicsemi.android.service.ConnectingResult +import no.nordicsemi.android.service.IdleResult import no.nordicsemi.android.service.ServiceManager import no.nordicsemi.ui.scanner.DiscoveredBluetoothDevice import javax.inject.Inject @@ -28,7 +29,7 @@ class HTSRepository @Inject constructor( private var manager: HTSManager? = null private var logger: ToolboxLogger? = null - private val _data = MutableStateFlow>(ConnectingResult()) + private val _data = MutableStateFlow>(IdleResult()) internal val data = _data.asStateFlow() val isRunning = data.map { it.isRunning() } diff --git a/profile_hts/src/main/java/no/nordicsemi/android/hts/view/HTSScreen.kt b/profile_hts/src/main/java/no/nordicsemi/android/hts/view/HTSScreen.kt index 4b780caf..1214ab1d 100644 --- a/profile_hts/src/main/java/no/nordicsemi/android/hts/view/HTSScreen.kt +++ b/profile_hts/src/main/java/no/nordicsemi/android/hts/view/HTSScreen.kt @@ -50,7 +50,7 @@ fun HTSScreen() { @Composable private fun AppBar(state: HTSViewState, navigateUp: () -> Unit, viewModel: HTSViewModel) { val toolbarName = (state.htsManagerState as? WorkingState)?.let { - (it.result as? SuccessResult)?.deviceName() + (it.result as? DeviceHolder)?.deviceName() } if (toolbarName == null) { diff --git a/profile_prx/src/main/java/no/nordicsemi/android/prx/repository/PRXRepository.kt b/profile_prx/src/main/java/no/nordicsemi/android/prx/repository/PRXRepository.kt index 695680e0..775623fc 100644 --- a/profile_prx/src/main/java/no/nordicsemi/android/prx/repository/PRXRepository.kt +++ b/profile_prx/src/main/java/no/nordicsemi/android/prx/repository/PRXRepository.kt @@ -29,7 +29,7 @@ class PRXRepository @Inject internal constructor( private var manager: PRXManager? = null private var logger: ToolboxLogger? = null - private val _data = MutableStateFlow>(ConnectingResult()) + private val _data = MutableStateFlow>(IdleResult()) internal val data = _data.asStateFlow() val isRunning = data.map { it.isRunning() } diff --git a/profile_prx/src/main/java/no/nordicsemi/android/prx/view/PRXScreen.kt b/profile_prx/src/main/java/no/nordicsemi/android/prx/view/PRXScreen.kt index b5230b9a..ba03da0f 100644 --- a/profile_prx/src/main/java/no/nordicsemi/android/prx/view/PRXScreen.kt +++ b/profile_prx/src/main/java/no/nordicsemi/android/prx/view/PRXScreen.kt @@ -51,7 +51,7 @@ fun PRXScreen() { @Composable private fun AppBar(state: PRXViewState, navigateUp: () -> Unit, viewModel: PRXViewModel) { val toolbarName = (state as? WorkingState)?.let { - (it.result as? SuccessResult)?.deviceName() + (it.result as? DeviceHolder)?.deviceName() } if (toolbarName == null) { diff --git a/profile_rscs/src/main/java/no/nordicsemi/android/rscs/repository/RSCSRepository.kt b/profile_rscs/src/main/java/no/nordicsemi/android/rscs/repository/RSCSRepository.kt index 4b4f2141..b41bc83c 100644 --- a/profile_rscs/src/main/java/no/nordicsemi/android/rscs/repository/RSCSRepository.kt +++ b/profile_rscs/src/main/java/no/nordicsemi/android/rscs/repository/RSCSRepository.kt @@ -1,6 +1,5 @@ package no.nordicsemi.android.rscs.repository -import android.bluetooth.BluetoothDevice import android.content.Context import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.CoroutineScope @@ -12,7 +11,7 @@ import no.nordicsemi.android.logger.ToolboxLoggerFactory import no.nordicsemi.android.rscs.data.RSCSData import no.nordicsemi.android.rscs.data.RSCSManager import no.nordicsemi.android.service.BleManagerResult -import no.nordicsemi.android.service.ConnectingResult +import no.nordicsemi.android.service.IdleResult import no.nordicsemi.android.service.ServiceManager import no.nordicsemi.ui.scanner.DiscoveredBluetoothDevice import javax.inject.Inject @@ -28,7 +27,7 @@ class RSCSRepository @Inject constructor( private var manager: RSCSManager? = null private var logger: ToolboxLogger? = null - private val _data = MutableStateFlow>(ConnectingResult()) + private val _data = MutableStateFlow>(IdleResult()) internal val data = _data.asStateFlow() val isRunning = data.map { it.isRunning() } diff --git a/profile_rscs/src/main/java/no/nordicsemi/android/rscs/view/RSCSScreen.kt b/profile_rscs/src/main/java/no/nordicsemi/android/rscs/view/RSCSScreen.kt index f3c04d11..5ae9b66e 100644 --- a/profile_rscs/src/main/java/no/nordicsemi/android/rscs/view/RSCSScreen.kt +++ b/profile_rscs/src/main/java/no/nordicsemi/android/rscs/view/RSCSScreen.kt @@ -50,7 +50,7 @@ fun RSCSScreen() { @Composable private fun AppBar(state: RSCSViewState, navigateUp: () -> Unit, viewModel: RSCSViewModel) { val toolbarName = (state as? WorkingState)?.let { - (it.result as? SuccessResult)?.deviceName() + (it.result as? DeviceHolder)?.deviceName() } if (toolbarName == null) { diff --git a/profile_uart/src/main/java/no/nordicsemi/android/uart/repository/UARTRepository.kt b/profile_uart/src/main/java/no/nordicsemi/android/uart/repository/UARTRepository.kt index 41d58f5b..010904d2 100644 --- a/profile_uart/src/main/java/no/nordicsemi/android/uart/repository/UARTRepository.kt +++ b/profile_uart/src/main/java/no/nordicsemi/android/uart/repository/UARTRepository.kt @@ -1,6 +1,5 @@ package no.nordicsemi.android.uart.repository -import android.bluetooth.BluetoothDevice import android.content.Context import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.CoroutineScope diff --git a/profile_uart/src/main/java/no/nordicsemi/android/uart/view/UARTScreen.kt b/profile_uart/src/main/java/no/nordicsemi/android/uart/view/UARTScreen.kt index d9079ea5..c8905add 100644 --- a/profile_uart/src/main/java/no/nordicsemi/android/uart/view/UARTScreen.kt +++ b/profile_uart/src/main/java/no/nordicsemi/android/uart/view/UARTScreen.kt @@ -51,7 +51,7 @@ fun UARTScreen() { @Composable private fun AppBar(state: UARTViewState, navigateUp: () -> Unit, onEvent: (UARTViewEvent) -> Unit) { val toolbarName = (state.uartManagerState as? WorkingState)?.let { - (it.result as? SuccessResult)?.deviceName() + (it.result as? DeviceHolder)?.deviceName() } if (toolbarName == null) {