From 77c0d057b52f8501f6aab298b1e754d84c84071b Mon Sep 17 00:00:00 2001 From: Sylwester Zielinski Date: Thu, 27 Apr 2023 13:47:57 +0200 Subject: [PATCH] Properly consume disconnected state --- .../java/no/nordicsemi/android/bps/view/BPSScreen.kt | 2 +- .../java/no/nordicsemi/android/cgms/view/CGMScreen.kt | 5 ----- .../java/no/nordicsemi/android/csc/view/CSCScreen.kt | 2 +- .../no/nordicsemi/android/gls/main/view/GLSScreen.kt | 2 +- .../java/no/nordicsemi/android/hrs/view/HRSScreen.kt | 2 +- .../nordicsemi/android/hts/repository/HTSRepository.kt | 9 ++++++--- .../no/nordicsemi/android/hts/repository/HTSService.kt | 5 +++++ .../java/no/nordicsemi/android/hts/view/HTSScreen.kt | 3 +-- .../no/nordicsemi/android/hts/viewmodel/HTSViewModel.kt | 2 +- .../java/no/nordicsemi/android/rscs/view/RSCSScreen.kt | 2 +- 10 files changed, 18 insertions(+), 16 deletions(-) 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 03d19b54..8fd0a5d9 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 @@ -83,7 +83,7 @@ fun BPSScreen() { null, GattConnectionState.STATE_CONNECTING -> DeviceConnectingView { NavigateUpButton(navigateUp) } GattConnectionState.STATE_DISCONNECTED, - GattConnectionState.STATE_DISCONNECTING -> DeviceDisconnectedView(Reason.UNKNOWN) { + GattConnectionState.STATE_DISCONNECTING -> DeviceDisconnectedView(state.result.connectionState.status) { NavigateUpButton(navigateUp) } GattConnectionState.STATE_CONNECTED -> BPSContentView(state.result) { viewModel.onEvent(it) } 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 3fb0e623..2e02bba0 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 @@ -40,18 +40,13 @@ import androidx.compose.material3.Scaffold import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.ui.Modifier -import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import no.nordicsemi.android.cgms.R -import no.nordicsemi.android.cgms.data.CGMServiceData import no.nordicsemi.android.cgms.viewmodel.CGMViewModel import no.nordicsemi.android.common.ui.scanner.view.DeviceConnectingView import no.nordicsemi.android.common.ui.scanner.view.DeviceDisconnectedView import no.nordicsemi.android.kotlin.ble.core.data.GattConnectionState -import no.nordicsemi.android.ui.view.BackIconAppBar -import no.nordicsemi.android.ui.view.LoggerBackIconAppBar -import no.nordicsemi.android.ui.view.LoggerIconAppBar import no.nordicsemi.android.ui.view.NavigateUpButton import no.nordicsemi.android.ui.view.ProfileAppBar 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 7c454235..8ae5d0a3 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 @@ -86,7 +86,7 @@ fun CSCScreen() { null, GattConnectionState.STATE_CONNECTING -> DeviceConnectingView { NavigateUpButton(navigateUp) } GattConnectionState.STATE_DISCONNECTED, - GattConnectionState.STATE_DISCONNECTING -> DeviceDisconnectedView(Reason.UNKNOWN) { + GattConnectionState.STATE_DISCONNECTING -> DeviceDisconnectedView(state.connectionState.status) { NavigateUpButton(navigateUp) } GattConnectionState.STATE_CONNECTED -> CSCContentView(state) { viewModel.onEvent(it) } 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 8e105581..7bda808b 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 @@ -84,7 +84,7 @@ fun GLSScreen() { null, GattConnectionState.STATE_CONNECTING -> DeviceConnectingView { NavigateUpButton(navigateUp) } GattConnectionState.STATE_DISCONNECTED, - GattConnectionState.STATE_DISCONNECTING -> DeviceDisconnectedView(Reason.UNKNOWN) { + GattConnectionState.STATE_DISCONNECTING -> DeviceDisconnectedView(state.glsServiceData.connectionState.status) { NavigateUpButton(navigateUp) } GattConnectionState.STATE_CONNECTED -> GLSContentView(state.glsServiceData) { viewModel.onEvent(it) } 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 3219714d..d04d177b 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 @@ -83,7 +83,7 @@ fun HRSScreen() { null, GattConnectionState.STATE_CONNECTING -> DeviceConnectingView { NavigateUpButton(navigateUp) } GattConnectionState.STATE_DISCONNECTED, - GattConnectionState.STATE_DISCONNECTING -> DeviceDisconnectedView(Reason.UNKNOWN) { + GattConnectionState.STATE_DISCONNECTING -> DeviceDisconnectedView(state.connectionState.status) { NavigateUpButton(navigateUp) } GattConnectionState.STATE_CONNECTED -> HRSContentView(state) { viewModel.onEvent(it) } 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 4e4224fe..78b9836a 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 @@ -94,9 +94,12 @@ class HTSRepository @Inject constructor( _loggerEvent.tryEmit(OpenLoggerEvent()) } - fun release() { - logger = null - _data.value = HTSServiceData() + fun disconnect() { _stopEvent.tryEmit(DisconnectAndStopEvent()) } + + fun clear() { + logger = null + _data.value = HTSServiceData() + } } diff --git a/profile_hts/src/main/java/no/nordicsemi/android/hts/repository/HTSService.kt b/profile_hts/src/main/java/no/nordicsemi/android/hts/repository/HTSService.kt index 349620a2..cf6e783f 100644 --- a/profile_hts/src/main/java/no/nordicsemi/android/hts/repository/HTSService.kt +++ b/profile_hts/src/main/java/no/nordicsemi/android/hts/repository/HTSService.kt @@ -144,4 +144,9 @@ internal class HTSService : NotificationService() { private fun disconnect() { client.disconnect() } + + override fun onDestroy() { + super.onDestroy() + repository.clear() + } } 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 be224b0e..df6535ed 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 @@ -44,7 +44,6 @@ import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import no.nordicsemi.android.common.ui.scanner.view.DeviceConnectingView import no.nordicsemi.android.common.ui.scanner.view.DeviceDisconnectedView -import no.nordicsemi.android.common.ui.scanner.view.Reason import no.nordicsemi.android.hts.R import no.nordicsemi.android.hts.viewmodel.HTSViewModel import no.nordicsemi.android.kotlin.ble.core.data.GattConnectionState @@ -84,7 +83,7 @@ fun HTSScreen() { null, GattConnectionState.STATE_CONNECTING -> DeviceConnectingView { NavigateUpButton(navigateUp) } GattConnectionState.STATE_DISCONNECTED, - GattConnectionState.STATE_DISCONNECTING -> DeviceDisconnectedView(Reason.UNKNOWN) { + GattConnectionState.STATE_DISCONNECTING -> DeviceDisconnectedView(state.connectionState.status) { NavigateUpButton(navigateUp) } GattConnectionState.STATE_CONNECTED -> HTSContentView(state) { viewModel.onEvent(it) } diff --git a/profile_hts/src/main/java/no/nordicsemi/android/hts/viewmodel/HTSViewModel.kt b/profile_hts/src/main/java/no/nordicsemi/android/hts/viewmodel/HTSViewModel.kt index fbc760f1..e1f854e2 100644 --- a/profile_hts/src/main/java/no/nordicsemi/android/hts/viewmodel/HTSViewModel.kt +++ b/profile_hts/src/main/java/no/nordicsemi/android/hts/viewmodel/HTSViewModel.kt @@ -114,7 +114,7 @@ internal class HTSViewModel @Inject constructor( } private fun disconnect() { - repository.release() + repository.disconnect() navigationManager.navigateUp() } 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 06e9c1a0..d25e3057 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 @@ -83,7 +83,7 @@ fun RSCSScreen() { null, GattConnectionState.STATE_CONNECTING -> DeviceConnectingView { NavigateUpButton(navigateUp) } GattConnectionState.STATE_DISCONNECTED, - GattConnectionState.STATE_DISCONNECTING -> DeviceDisconnectedView(Reason.UNKNOWN) { + GattConnectionState.STATE_DISCONNECTING -> DeviceDisconnectedView(state.connectionState.status) { NavigateUpButton(navigateUp) } GattConnectionState.STATE_CONNECTED -> RSCSContentView(state) { viewModel.onEvent(it) }