diff --git a/app/build.gradle.kts b/app/build.gradle.kts index cb993657..0c3d502b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -70,6 +70,8 @@ dependencies { implementation(libs.nordic.permission) implementation(libs.nordic.analytics) + implementation(libs.androidx.lifecycle.runtime.compose) + implementation(libs.nordic.ble.common) implementation(libs.nordic.ble.ktx) diff --git a/app/src/main/java/no/nordicsemi/android/nrftoolbox/view/HomeView.kt b/app/src/main/java/no/nordicsemi/android/nrftoolbox/view/HomeView.kt index 709ace76..10a796cb 100644 --- a/app/src/main/java/no/nordicsemi/android/nrftoolbox/view/HomeView.kt +++ b/app/src/main/java/no/nordicsemi/android/nrftoolbox/view/HomeView.kt @@ -39,7 +39,6 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.collectAsState import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalUriHandler @@ -47,6 +46,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel +import androidx.lifecycle.compose.collectAsStateWithLifecycle import no.nordicsemi.android.analytics.Link import no.nordicsemi.android.analytics.Profile import no.nordicsemi.android.analytics.ProfileOpenEvent @@ -72,7 +72,7 @@ private const val LOGGER_PACKAGE_NAME = "no.nordicsemi.android.log" @Composable fun HomeScreen() { val viewModel: HomeViewModel = hiltViewModel() - val state = viewModel.state.collectAsState().value + val state = viewModel.state.collectAsStateWithLifecycle().value Scaffold( topBar = { 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 939d6322..f573f7a4 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 @@ -38,11 +38,11 @@ import androidx.compose.foundation.verticalScroll import androidx.compose.material3.ExperimentalMaterial3Api 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 androidx.lifecycle.compose.collectAsStateWithLifecycle import no.nordicsemi.android.bps.R import no.nordicsemi.android.bps.viewmodel.BPSViewModel import no.nordicsemi.android.common.ui.scanner.view.DeviceConnectingView @@ -65,7 +65,7 @@ import no.nordicsemi.android.ui.view.NavigateUpButton @Composable fun BPSScreen() { val viewModel: BPSViewModel = hiltViewModel() - val state = viewModel.state.collectAsState().value + val state = viewModel.state.collectAsStateWithLifecycle().value val navigateUp = { viewModel.onEvent(DisconnectEvent) } 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 384295e0..9b21d40f 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 @@ -38,11 +38,11 @@ import androidx.compose.foundation.verticalScroll import androidx.compose.material3.ExperimentalMaterial3Api 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 androidx.lifecycle.compose.collectAsStateWithLifecycle import no.nordicsemi.android.cgms.R import no.nordicsemi.android.cgms.viewmodel.CGMViewModel import no.nordicsemi.android.common.ui.scanner.view.DeviceConnectingView @@ -65,7 +65,7 @@ import no.nordicsemi.android.ui.view.NavigateUpButton @Composable fun CGMScreen() { val viewModel: CGMViewModel = hiltViewModel() - val state = viewModel.state.collectAsState().value + val state = viewModel.state.collectAsStateWithLifecycle().value val navigateUp = { viewModel.onEvent(NavigateUp) } 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 e7980385..8c628581 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 @@ -38,11 +38,11 @@ import androidx.compose.foundation.verticalScroll import androidx.compose.material3.ExperimentalMaterial3Api 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 androidx.lifecycle.compose.collectAsStateWithLifecycle 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 @@ -65,7 +65,7 @@ import no.nordicsemi.android.ui.view.NavigateUpButton @Composable fun CSCScreen() { val viewModel: CSCViewModel = hiltViewModel() - val state = viewModel.state.collectAsState().value + val state = viewModel.state.collectAsStateWithLifecycle().value val navigateUp = { viewModel.onEvent(NavigateUp) } diff --git a/profile_gls/src/main/java/no/nordicsemi/android/gls/details/view/GLSDetailsScreen.kt b/profile_gls/src/main/java/no/nordicsemi/android/gls/details/view/GLSDetailsScreen.kt index 07791fac..2e98601d 100644 --- a/profile_gls/src/main/java/no/nordicsemi/android/gls/details/view/GLSDetailsScreen.kt +++ b/profile_gls/src/main/java/no/nordicsemi/android/gls/details/view/GLSDetailsScreen.kt @@ -33,9 +33,9 @@ package no.nordicsemi.android.gls.details.view import androidx.compose.foundation.layout.Column import androidx.compose.runtime.Composable -import androidx.compose.runtime.collectAsState import androidx.compose.ui.res.stringResource import androidx.hilt.navigation.compose.hiltViewModel +import androidx.lifecycle.compose.collectAsStateWithLifecycle import no.nordicsemi.android.gls.R import no.nordicsemi.android.gls.details.viewmodel.GLSDetailsViewModel import no.nordicsemi.android.ui.view.LoggerBackIconAppBar @@ -43,7 +43,7 @@ import no.nordicsemi.android.ui.view.LoggerBackIconAppBar @Composable internal fun GLSDetailsScreen() { val viewModel: GLSDetailsViewModel = hiltViewModel() - val record = viewModel.record.collectAsState().value + val record = viewModel.record.collectAsStateWithLifecycle().value Column { LoggerBackIconAppBar(stringResource(id = R.string.gls_title)) { 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 0f6e956e..c922e608 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 @@ -38,11 +38,11 @@ import androidx.compose.foundation.verticalScroll import androidx.compose.material3.ExperimentalMaterial3Api 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 androidx.lifecycle.compose.collectAsStateWithLifecycle 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 @@ -65,7 +65,7 @@ import no.nordicsemi.android.ui.view.NavigateUpButton @Composable fun GLSScreen() { val viewModel: GLSViewModel = hiltViewModel() - val state = viewModel.state.collectAsState().value + val state = viewModel.state.collectAsStateWithLifecycle().value val navigateUp = { viewModel.onEvent(DisconnectEvent) } 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 c615f37a..303d9dda 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 @@ -38,11 +38,11 @@ import androidx.compose.foundation.verticalScroll import androidx.compose.material3.ExperimentalMaterial3Api 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 androidx.lifecycle.compose.collectAsStateWithLifecycle 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 @@ -65,7 +65,7 @@ import no.nordicsemi.android.ui.view.NavigateUpButton @Composable fun HRSScreen() { val viewModel: HRSViewModel = hiltViewModel() - val state = viewModel.state.collectAsState().value + val state = viewModel.state.collectAsStateWithLifecycle().value val navigateUp = { viewModel.onEvent(NavigateUpEvent) } 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 60f506cf..4c725540 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 @@ -38,11 +38,11 @@ import androidx.compose.foundation.verticalScroll import androidx.compose.material3.ExperimentalMaterial3Api 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 androidx.lifecycle.compose.collectAsStateWithLifecycle 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 @@ -65,7 +65,7 @@ import no.nordicsemi.android.ui.view.NavigateUpButton @Composable fun HTSScreen() { val viewModel: HTSViewModel = hiltViewModel() - val state = viewModel.state.collectAsState().value + val state = viewModel.state.collectAsStateWithLifecycle().value val navigateUp = { viewModel.onEvent(NavigateUp) } 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 933db8a7..a5875a46 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 @@ -38,12 +38,11 @@ import androidx.compose.foundation.verticalScroll import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Scaffold import androidx.compose.runtime.Composable -import androidx.compose.runtime.collectAsState -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel +import androidx.lifecycle.compose.collectAsStateWithLifecycle 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 @@ -66,7 +65,7 @@ import no.nordicsemi.android.ui.view.NavigateUpButton @Composable fun PRXScreen() { val viewModel: PRXViewModel = hiltViewModel() - val state = viewModel.state.collectAsState().value + val state = viewModel.state.collectAsStateWithLifecycle().value val navigateUp = { viewModel.onEvent(NavigateUpEvent) } 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 9825bf92..e6bcd9f2 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 @@ -38,11 +38,11 @@ import androidx.compose.foundation.verticalScroll import androidx.compose.material3.ExperimentalMaterial3Api 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 androidx.lifecycle.compose.collectAsStateWithLifecycle 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 @@ -65,7 +65,7 @@ import no.nordicsemi.android.ui.view.NavigateUpButton @Composable fun RSCSScreen() { val viewModel: RSCSViewModel = hiltViewModel() - val state = viewModel.state.collectAsState().value + val state = viewModel.state.collectAsStateWithLifecycle().value val navigateUp = { viewModel.onEvent(NavigateUpEvent) } 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 87f0b7d3..fd0a960f 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 @@ -40,13 +40,13 @@ import androidx.compose.foundation.verticalScroll import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Scaffold import androidx.compose.runtime.Composable -import androidx.compose.runtime.collectAsState import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel +import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.google.accompanist.pager.ExperimentalPagerApi import no.nordicsemi.android.common.theme.view.PagerView import no.nordicsemi.android.common.theme.view.PagerViewEntity @@ -73,7 +73,7 @@ import no.nordicsemi.android.ui.view.NavigateUpButton @Composable fun UARTScreen() { val viewModel: UARTViewModel = hiltViewModel() - val state = viewModel.state.collectAsState().value + val state = viewModel.state.collectAsStateWithLifecycle().value val navigateUp = { viewModel.onEvent(NavigateUp) } @@ -145,7 +145,7 @@ private fun SuccessScreen() { @Composable private fun KeyboardView() { val viewModel: UARTViewModel = hiltViewModel() - val state = viewModel.state.collectAsState().value + val state = viewModel.state.collectAsStateWithLifecycle().value (state.uartManagerState as? WorkingState)?.let { (state.uartManagerState.result as? SuccessResult)?.let { UARTContentView(it.data) { viewModel.onEvent(it) } @@ -156,7 +156,7 @@ private fun KeyboardView() { @Composable private fun MacroView() { val viewModel: UARTViewModel = hiltViewModel() - val state = viewModel.state.collectAsState().value + val state = viewModel.state.collectAsStateWithLifecycle().value (state.uartManagerState as? WorkingState)?.let { (state.uartManagerState.result as? SuccessResult)?.let { MacroSection(state) { viewModel.onEvent(it) }