diff --git a/app/build.gradle b/app/build.gradle index 1ab5aeb93..41f16f934 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -92,6 +92,7 @@ dependencies { implementation libs.nordic.ui.scanner implementation libs.nordic.navigation implementation libs.nordic.ui.logger + implementation libs.nordic.analytics implementation libs.bundles.hilt kapt libs.bundles.hiltkapt diff --git a/app/src/main/java/no/nordicsemi/android/nrftoolbox/MainActivity.kt b/app/src/main/java/no/nordicsemi/android/nrftoolbox/MainActivity.kt index 26481f496..7f5eb9edc 100644 --- a/app/src/main/java/no/nordicsemi/android/nrftoolbox/MainActivity.kt +++ b/app/src/main/java/no/nordicsemi/android/nrftoolbox/MainActivity.kt @@ -7,6 +7,7 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.ui.Modifier import dagger.hilt.android.AndroidEntryPoint +import no.nordicsemi.analytics.view.AnalyticsPermissionRequestDialog import no.nordicsemi.android.gls.GLSDestinations import no.nordicsemi.android.material.you.NordicActivity import no.nordicsemi.android.material.you.NordicTheme @@ -32,6 +33,8 @@ class MainActivity : NordicActivity() { ) { NavigationView(HomeDestinations + ProfileDestinations + ScannerDestinations + GLSDestinations) } + + AnalyticsPermissionRequestDialog() } } } diff --git a/app/src/main/java/no/nordicsemi/android/nrftoolbox/view/FeatureButton.kt b/app/src/main/java/no/nordicsemi/android/nrftoolbox/view/FeatureButton.kt index 278d1159a..0d8cfe9d6 100644 --- a/app/src/main/java/no/nordicsemi/android/nrftoolbox/view/FeatureButton.kt +++ b/app/src/main/java/no/nordicsemi/android/nrftoolbox/view/FeatureButton.kt @@ -20,8 +20,8 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import no.nordicsemi.android.nrftoolbox.R import no.nordicsemi.android.material.you.ScreenSection +import no.nordicsemi.android.nrftoolbox.R @Composable fun FeatureButton( 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 01e783c05..c2a79f3d9 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 @@ -17,12 +17,10 @@ import androidx.hilt.navigation.compose.hiltViewModel import no.nordicsemi.android.analytics.Link import no.nordicsemi.android.analytics.Profile import no.nordicsemi.android.analytics.ProfileOpenEvent -import no.nordicsemi.android.logger.LoggerAppRunner import no.nordicsemi.android.nrftoolbox.BuildConfig import no.nordicsemi.android.nrftoolbox.ProfileDestination import no.nordicsemi.android.nrftoolbox.R import no.nordicsemi.android.nrftoolbox.viewmodel.HomeViewModel -import no.nordicsemi.android.theme.view.TitleAppBar private const val DFU_PACKAGE_NAME = "no.nordicsemi.android.dfu" private const val DFU_LINK = "https://play.google.com/store/apps/details?id=no.nordicsemi.android.dfu" diff --git a/app/src/main/java/no/nordicsemi/android/nrftoolbox/view/TitleAppBar.kt b/app/src/main/java/no/nordicsemi/android/nrftoolbox/view/TitleAppBar.kt new file mode 100644 index 000000000..f0825475b --- /dev/null +++ b/app/src/main/java/no/nordicsemi/android/nrftoolbox/view/TitleAppBar.kt @@ -0,0 +1,27 @@ +package no.nordicsemi.android.nrftoolbox.view + +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.SmallTopAppBar +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.ui.res.colorResource +import no.nordicsemi.analytics.view.AnalyticsPermissionButton +import no.nordicsemi.android.theme.R + +@Composable +fun TitleAppBar(text: String) { + SmallTopAppBar( + title = { Text(text, maxLines = 2) }, + colors = TopAppBarDefaults.smallTopAppBarColors( + scrolledContainerColor = MaterialTheme.colorScheme.primary, + containerColor = colorResource(id = R.color.appBarColor), + titleContentColor = MaterialTheme.colorScheme.onPrimary, + actionIconContentColor = MaterialTheme.colorScheme.onPrimary, + navigationIconContentColor = MaterialTheme.colorScheme.onPrimary, + ), + actions = { + AnalyticsPermissionButton() + } + ) +} diff --git a/app/src/main/java/no/nordicsemi/android/nrftoolbox/viewmodel/HomeViewModel.kt b/app/src/main/java/no/nordicsemi/android/nrftoolbox/viewmodel/HomeViewModel.kt index e75e0c43b..fefd3120f 100644 --- a/app/src/main/java/no/nordicsemi/android/nrftoolbox/viewmodel/HomeViewModel.kt +++ b/app/src/main/java/no/nordicsemi/android/nrftoolbox/viewmodel/HomeViewModel.kt @@ -1,6 +1,5 @@ package no.nordicsemi.android.nrftoolbox.viewmodel -import android.util.Log import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel diff --git a/build.gradle b/build.gradle index 6d1d76802..5f123f89c 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:7.2.0' + classpath 'com.android.tools.build:gradle:7.2.1' classpath 'com.google.gms:google-services:4.3.10' classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" diff --git a/lib_analytics/build.gradle b/lib_analytics/build.gradle index a097513ee..f9eb3f3e0 100644 --- a/lib_analytics/build.gradle +++ b/lib_analytics/build.gradle @@ -8,4 +8,6 @@ dependencies { implementation platform('com.google.firebase:firebase-bom:29.2.1') implementation 'com.google.firebase:firebase-analytics' implementation 'com.google.firebase:firebase-crashlytics' + + implementation libs.nordic.analytics } diff --git a/lib_analytics/src/main/java/no/nordicsemi/android/analytics/AppAnalytics.kt b/lib_analytics/src/main/java/no/nordicsemi/android/analytics/AppAnalytics.kt index 9639975b3..9716276f1 100644 --- a/lib_analytics/src/main/java/no/nordicsemi/android/analytics/AppAnalytics.kt +++ b/lib_analytics/src/main/java/no/nordicsemi/android/analytics/AppAnalytics.kt @@ -1,22 +1,17 @@ package no.nordicsemi.android.analytics import android.annotation.SuppressLint -import android.content.Context -import com.google.firebase.analytics.FirebaseAnalytics -import dagger.hilt.android.qualifiers.ApplicationContext +import no.nordicsemi.analytics.NordicAnalytics import javax.inject.Inject import javax.inject.Singleton @SuppressLint("MissingPermission") @Singleton class AppAnalytics @Inject constructor( - @ApplicationContext - private val context: Context + private val nordicAnalytics: NordicAnalytics ) { - private val firebase by lazy { FirebaseAnalytics.getInstance(context) } - fun logEvent(event: FirebaseEvent) { - firebase.logEvent(event.eventName, event.params) + nordicAnalytics.logEvent(event.eventName, event.params) } } 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 e4b83438c..2b7357aa7 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 @@ -27,6 +27,7 @@ sealed class DeviceHolder(val device: BluetoothDevice) { class IdleResult : BleManagerResult class ConnectingResult(device: BluetoothDevice) : DeviceHolder(device), BleManagerResult +class ConnectedResult(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 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 bfead4ec3..2fc3a500c 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 @@ -26,6 +26,7 @@ class ConnectionObserverAdapter : ConnectionObserver { override fun onDeviceConnected(device: BluetoothDevice) { Log.d(TAG, "onDeviceConnected()") + _status.value = ConnectedResult(device) } override fun onDeviceFailedToConnect(device: BluetoothDevice, reason: Int) { diff --git a/lib_theme/src/main/java/no/nordicsemi/android/theme/view/TopAppBar.kt b/lib_theme/src/main/java/no/nordicsemi/android/theme/view/TopAppBar.kt index a5c2c146b..5fa522e85 100644 --- a/lib_theme/src/main/java/no/nordicsemi/android/theme/view/TopAppBar.kt +++ b/lib_theme/src/main/java/no/nordicsemi/android/theme/view/TopAppBar.kt @@ -36,20 +36,6 @@ fun CloseIconAppBar(text: String, onClick: () -> Unit) { ) } -@Composable -fun TitleAppBar(text: String) { - SmallTopAppBar( - title = { Text(text, maxLines = 2) }, - colors = TopAppBarDefaults.smallTopAppBarColors( - scrolledContainerColor = MaterialTheme.colorScheme.primary, - containerColor = colorResource(id = R.color.appBarColor), - titleContentColor = MaterialTheme.colorScheme.onPrimary, - actionIconContentColor = MaterialTheme.colorScheme.onPrimary, - navigationIconContentColor = MaterialTheme.colorScheme.onPrimary, - ) - ) -} - @Composable fun LoggerBackIconAppBar(text: String, onClick: () -> Unit) { SmallTopAppBar( diff --git a/lib_theme/src/main/java/no/nordicsemi/android/theme/view/dialog/StringListDialog.kt b/lib_theme/src/main/java/no/nordicsemi/android/theme/view/dialog/StringListDialog.kt index f930491dc..2ece02a2d 100644 --- a/lib_theme/src/main/java/no/nordicsemi/android/theme/view/dialog/StringListDialog.kt +++ b/lib_theme/src/main/java/no/nordicsemi/android/theme/view/dialog/StringListDialog.kt @@ -2,7 +2,10 @@ package no.nordicsemi.android.theme.view.dialog import androidx.compose.foundation.Image import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll 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 a634a6ad0..787961426 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 @@ -1,6 +1,5 @@ package no.nordicsemi.android.bps.view -import android.annotation.SuppressLint import androidx.compose.foundation.layout.Column import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll @@ -10,7 +9,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.hilt.navigation.compose.hiltViewModel import no.nordicsemi.android.bps.R -import no.nordicsemi.android.bps.data.BPSData import no.nordicsemi.android.bps.viewmodel.BPSViewModel import no.nordicsemi.android.service.* import no.nordicsemi.android.theme.view.BackIconAppBar @@ -37,6 +35,7 @@ fun BPSScreen() { is WorkingState -> when (state.result) { is IdleResult, is ConnectingResult -> DeviceConnectingView { viewModel.onEvent(DisconnectEvent) } + is ConnectedResult -> DeviceConnectingView { viewModel.onEvent(DisconnectEvent) } is DisconnectedResult -> DeviceDisconnectedView(Reason.USER, navigateUp) is LinkLossResult -> DeviceDisconnectedView(Reason.LINK_LOSS, navigateUp) is MissingServiceResult -> DeviceDisconnectedView(Reason.MISSING_SERVICE, navigateUp) diff --git a/profile_bps/src/main/java/no/nordicsemi/android/bps/view/BPSViewState.kt b/profile_bps/src/main/java/no/nordicsemi/android/bps/view/BPSViewState.kt index d5b145a26..e720d7c21 100644 --- a/profile_bps/src/main/java/no/nordicsemi/android/bps/view/BPSViewState.kt +++ b/profile_bps/src/main/java/no/nordicsemi/android/bps/view/BPSViewState.kt @@ -2,7 +2,6 @@ package no.nordicsemi.android.bps.view import no.nordicsemi.android.bps.data.BPSData import no.nordicsemi.android.service.BleManagerResult -import no.nordicsemi.ui.scanner.DiscoveredBluetoothDevice internal sealed class BPSViewState diff --git a/profile_bps/src/main/java/no/nordicsemi/android/bps/viewmodel/BPSViewModel.kt b/profile_bps/src/main/java/no/nordicsemi/android/bps/viewmodel/BPSViewModel.kt index 41cb24f6b..4380e5370 100644 --- a/profile_bps/src/main/java/no/nordicsemi/android/bps/viewmodel/BPSViewModel.kt +++ b/profile_bps/src/main/java/no/nordicsemi/android/bps/viewmodel/BPSViewModel.kt @@ -14,7 +14,7 @@ import no.nordicsemi.android.bps.data.BPS_SERVICE_UUID import no.nordicsemi.android.bps.repository.BPSRepository import no.nordicsemi.android.bps.view.* import no.nordicsemi.android.navigation.* -import no.nordicsemi.android.service.SuccessResult +import no.nordicsemi.android.service.ConnectedResult import no.nordicsemi.android.utils.exhaustive import no.nordicsemi.android.utils.getDevice import no.nordicsemi.ui.scanner.DiscoveredBluetoothDevice @@ -59,7 +59,7 @@ internal class BPSViewModel @Inject constructor( repository.downloadData(viewModelScope, device).onEach { _state.value = WorkingState(it) - (it as? SuccessResult)?.let { + (it as? ConnectedResult)?.let { analytics.logEvent(ProfileConnectedEvent(Profile.BPS)) } }.launchIn(viewModelScope) diff --git a/profile_cgms/src/main/java/no/nordicsemi/android/cgms/repository/CGMService.kt b/profile_cgms/src/main/java/no/nordicsemi/android/cgms/repository/CGMService.kt index 51f81d030..ddea33d01 100644 --- a/profile_cgms/src/main/java/no/nordicsemi/android/cgms/repository/CGMService.kt +++ b/profile_cgms/src/main/java/no/nordicsemi/android/cgms/repository/CGMService.kt @@ -1,6 +1,5 @@ package no.nordicsemi.android.cgms.repository -import android.bluetooth.BluetoothDevice import android.content.Intent import androidx.lifecycle.lifecycleScope import dagger.hilt.android.AndroidEntryPoint diff --git a/profile_cgms/src/main/java/no/nordicsemi/android/cgms/view/CGMContentView.kt b/profile_cgms/src/main/java/no/nordicsemi/android/cgms/view/CGMContentView.kt index 779b2f8d2..d42663797 100644 --- a/profile_cgms/src/main/java/no/nordicsemi/android/cgms/view/CGMContentView.kt +++ b/profile_cgms/src/main/java/no/nordicsemi/android/cgms/view/CGMContentView.kt @@ -5,6 +5,7 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Search import androidx.compose.material.icons.filled.Settings import androidx.compose.material3.Button +import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -17,10 +18,9 @@ import no.nordicsemi.android.cgms.data.CGMData import no.nordicsemi.android.cgms.data.CGMRecord import no.nordicsemi.android.cgms.data.CGMServiceCommand import no.nordicsemi.android.cgms.data.RequestStatus -import no.nordicsemi.android.theme.view.BatteryLevelView import no.nordicsemi.android.material.you.ScreenSection +import no.nordicsemi.android.theme.view.BatteryLevelView import no.nordicsemi.android.theme.view.SectionTitle -import androidx.compose.material3.CircularProgressIndicator @Composable internal fun CGMContentView(state: CGMData, onEvent: (CGMViewEvent) -> Unit) { 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 130961b4d..55b797ed0 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 @@ -9,7 +9,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.hilt.navigation.compose.hiltViewModel import no.nordicsemi.android.cgms.R -import no.nordicsemi.android.cgms.data.CGMData import no.nordicsemi.android.cgms.viewmodel.CGMViewModel import no.nordicsemi.android.service.* import no.nordicsemi.android.theme.view.BackIconAppBar @@ -36,6 +35,7 @@ fun CGMScreen() { is WorkingState -> when (state.result) { is IdleResult, is ConnectingResult -> DeviceConnectingView { viewModel.onEvent(DisconnectEvent) } + is ConnectedResult -> DeviceConnectingView { viewModel.onEvent(DisconnectEvent) } is DisconnectedResult -> DeviceDisconnectedView(Reason.USER, navigateUp) is LinkLossResult -> DeviceDisconnectedView(Reason.LINK_LOSS, navigateUp) is MissingServiceResult -> DeviceDisconnectedView(Reason.MISSING_SERVICE, navigateUp) diff --git a/profile_cgms/src/main/java/no/nordicsemi/android/cgms/viewmodel/CGMViewModel.kt b/profile_cgms/src/main/java/no/nordicsemi/android/cgms/viewmodel/CGMViewModel.kt index cbd679b25..ad34b5a07 100644 --- a/profile_cgms/src/main/java/no/nordicsemi/android/cgms/viewmodel/CGMViewModel.kt +++ b/profile_cgms/src/main/java/no/nordicsemi/android/cgms/viewmodel/CGMViewModel.kt @@ -9,11 +9,11 @@ import no.nordicsemi.android.analytics.AppAnalytics import no.nordicsemi.android.analytics.Profile import no.nordicsemi.android.analytics.ProfileConnectedEvent import no.nordicsemi.android.cgms.data.CGMS_SERVICE_UUID -import no.nordicsemi.android.cgms.repository.CGMRepository import no.nordicsemi.android.cgms.data.CGMServiceCommand +import no.nordicsemi.android.cgms.repository.CGMRepository import no.nordicsemi.android.cgms.view.* import no.nordicsemi.android.navigation.* -import no.nordicsemi.android.service.SuccessResult +import no.nordicsemi.android.service.ConnectedResult import no.nordicsemi.android.utils.exhaustive import no.nordicsemi.android.utils.getDevice import no.nordicsemi.ui.scanner.ScannerDestinationId @@ -39,7 +39,7 @@ internal class CGMViewModel @Inject constructor( repository.data.onEach { _state.value = WorkingState(it) - (it as? SuccessResult)?.let { + (it as? ConnectedResult)?.let { analytics.logEvent(ProfileConnectedEvent(Profile.CGMS)) } }.launchIn(viewModelScope) 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 9f787778f..c87d01e37 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 @@ -9,7 +9,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.hilt.navigation.compose.hiltViewModel import no.nordicsemi.android.csc.R -import no.nordicsemi.android.csc.data.CSCData import no.nordicsemi.android.csc.viewmodel.CSCViewModel import no.nordicsemi.android.service.* import no.nordicsemi.android.theme.view.BackIconAppBar @@ -36,6 +35,7 @@ fun CSCScreen() { is WorkingState -> when (state.cscManagerState.result) { is IdleResult, is ConnectingResult -> DeviceConnectingView { viewModel.onEvent(OnDisconnectButtonClick) } + is ConnectedResult -> DeviceConnectingView { viewModel.onEvent(OnDisconnectButtonClick) } is DisconnectedResult -> DeviceDisconnectedView(Reason.USER, navigateUp) is LinkLossResult -> DeviceDisconnectedView(Reason.LINK_LOSS, navigateUp) is MissingServiceResult -> DeviceDisconnectedView(Reason.MISSING_SERVICE, navigateUp) diff --git a/profile_csc/src/main/java/no/nordicsemi/android/csc/view/SelectWheelSizeDialog.kt b/profile_csc/src/main/java/no/nordicsemi/android/csc/view/SelectWheelSizeDialog.kt index ee3579255..092b18e1e 100644 --- a/profile_csc/src/main/java/no/nordicsemi/android/csc/view/SelectWheelSizeDialog.kt +++ b/profile_csc/src/main/java/no/nordicsemi/android/csc/view/SelectWheelSizeDialog.kt @@ -5,15 +5,11 @@ import androidx.compose.ui.res.stringArrayResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import no.nordicsemi.android.csc.R -import no.nordicsemi.android.csc.data.WheelSize import no.nordicsemi.android.material.you.NordicTheme -import no.nordicsemi.android.theme.view.dialog.FlowCanceled -import no.nordicsemi.android.theme.view.dialog.ItemSelectedResult import no.nordicsemi.android.theme.view.dialog.StringListDialog import no.nordicsemi.android.theme.view.dialog.StringListDialogConfig import no.nordicsemi.android.theme.view.dialog.StringListDialogResult import no.nordicsemi.android.theme.view.dialog.toAnnotatedString -import no.nordicsemi.android.utils.exhaustive @Composable internal fun SelectWheelSizeDialog(onEvent: (StringListDialogResult) -> Unit) { diff --git a/profile_csc/src/main/java/no/nordicsemi/android/csc/view/SensorsReadingView.kt b/profile_csc/src/main/java/no/nordicsemi/android/csc/view/SensorsReadingView.kt index 25c04b641..936629ba5 100644 --- a/profile_csc/src/main/java/no/nordicsemi/android/csc/view/SensorsReadingView.kt +++ b/profile_csc/src/main/java/no/nordicsemi/android/csc/view/SensorsReadingView.kt @@ -10,9 +10,9 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import no.nordicsemi.android.csc.R import no.nordicsemi.android.csc.data.CSCData +import no.nordicsemi.android.material.you.ScreenSection import no.nordicsemi.android.theme.view.BatteryLevelView import no.nordicsemi.android.theme.view.KeyValueField -import no.nordicsemi.android.material.you.ScreenSection import no.nordicsemi.android.theme.view.SectionTitle @Composable diff --git a/profile_csc/src/main/java/no/nordicsemi/android/csc/viewmodel/CSCViewModel.kt b/profile_csc/src/main/java/no/nordicsemi/android/csc/viewmodel/CSCViewModel.kt index b0ff2c19e..1f19564ae 100644 --- a/profile_csc/src/main/java/no/nordicsemi/android/csc/viewmodel/CSCViewModel.kt +++ b/profile_csc/src/main/java/no/nordicsemi/android/csc/viewmodel/CSCViewModel.kt @@ -12,7 +12,7 @@ import no.nordicsemi.android.csc.data.CSC_SERVICE_UUID import no.nordicsemi.android.csc.repository.CSCRepository import no.nordicsemi.android.csc.view.* import no.nordicsemi.android.navigation.* -import no.nordicsemi.android.service.SuccessResult +import no.nordicsemi.android.service.ConnectedResult import no.nordicsemi.android.utils.exhaustive import no.nordicsemi.android.utils.getDevice import no.nordicsemi.ui.scanner.ScannerDestinationId @@ -38,7 +38,7 @@ internal class CSCViewModel @Inject constructor( repository.data.onEach { _state.value = _state.value.copy(cscManagerState = WorkingState(it)) - (it as? SuccessResult)?.let { + (it as? ConnectedResult)?.let { analytics.logEvent(ProfileConnectedEvent(Profile.CSC)) } }.launchIn(viewModelScope) diff --git a/profile_gls/src/main/java/no/nordicsemi/android/gls/details/view/GLSDetailsMappers.kt b/profile_gls/src/main/java/no/nordicsemi/android/gls/details/view/GLSDetailsMappers.kt index 48434847d..79f132a6d 100644 --- a/profile_gls/src/main/java/no/nordicsemi/android/gls/details/view/GLSDetailsMappers.kt +++ b/profile_gls/src/main/java/no/nordicsemi/android/gls/details/view/GLSDetailsMappers.kt @@ -2,14 +2,10 @@ package no.nordicsemi.android.gls.details.view import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource +import no.nordicsemi.android.ble.common.profile.glucose.GlucoseMeasurementContextCallback.* import no.nordicsemi.android.gls.R -import no.nordicsemi.android.gls.data.MedicationUnit -import no.nordicsemi.android.ble.common.profile.glucose.GlucoseMeasurementContextCallback.Carbohydrate -import no.nordicsemi.android.ble.common.profile.glucose.GlucoseMeasurementContextCallback.Meal -import no.nordicsemi.android.ble.common.profile.glucose.GlucoseMeasurementContextCallback.Tester -import no.nordicsemi.android.ble.common.profile.glucose.GlucoseMeasurementContextCallback.Health -import no.nordicsemi.android.ble.common.profile.glucose.GlucoseMeasurementContextCallback.Medication import no.nordicsemi.android.gls.data.ConcentrationUnit +import no.nordicsemi.android.gls.data.MedicationUnit import no.nordicsemi.android.gls.data.SampleLocation @Composable diff --git a/profile_gls/src/main/java/no/nordicsemi/android/gls/main/view/GLSContentView.kt b/profile_gls/src/main/java/no/nordicsemi/android/gls/main/view/GLSContentView.kt index 612ae0045..38602cf7a 100644 --- a/profile_gls/src/main/java/no/nordicsemi/android/gls/main/view/GLSContentView.kt +++ b/profile_gls/src/main/java/no/nordicsemi/android/gls/main/view/GLSContentView.kt @@ -7,6 +7,7 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Search import androidx.compose.material.icons.filled.Settings import androidx.compose.material3.Button +import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -22,9 +23,8 @@ import no.nordicsemi.android.gls.data.GLSRecord import no.nordicsemi.android.gls.data.RequestStatus import no.nordicsemi.android.gls.data.WorkingMode import no.nordicsemi.android.gls.main.viewmodel.GLSViewModel -import androidx.compose.material3.CircularProgressIndicator -import no.nordicsemi.android.theme.view.BatteryLevelView import no.nordicsemi.android.material.you.ScreenSection +import no.nordicsemi.android.theme.view.BatteryLevelView import no.nordicsemi.android.theme.view.SectionTitle @Composable 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 48d70d4aa..3c5481e6f 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 @@ -1,6 +1,5 @@ package no.nordicsemi.android.gls.main.view -import android.util.Log import androidx.compose.foundation.layout.Column import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll @@ -10,7 +9,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.hilt.navigation.compose.hiltViewModel import no.nordicsemi.android.gls.R -import no.nordicsemi.android.gls.data.GLSData import no.nordicsemi.android.gls.main.viewmodel.GLSViewModel import no.nordicsemi.android.service.* import no.nordicsemi.android.theme.view.BackIconAppBar @@ -37,6 +35,7 @@ fun GLSScreen() { is WorkingState -> when (state.result) { is IdleResult, is ConnectingResult -> DeviceConnectingView { viewModel.onEvent(DisconnectEvent) } + is ConnectedResult -> DeviceConnectingView { viewModel.onEvent(DisconnectEvent) } is DisconnectedResult -> DeviceDisconnectedView(Reason.USER, navigateUp) is LinkLossResult -> DeviceDisconnectedView(Reason.LINK_LOSS, navigateUp) is MissingServiceResult -> DeviceDisconnectedView(Reason.MISSING_SERVICE, navigateUp) diff --git a/profile_gls/src/main/java/no/nordicsemi/android/gls/main/viewmodel/GLSViewModel.kt b/profile_gls/src/main/java/no/nordicsemi/android/gls/main/viewmodel/GLSViewModel.kt index aecfd8de0..657b72435 100644 --- a/profile_gls/src/main/java/no/nordicsemi/android/gls/main/viewmodel/GLSViewModel.kt +++ b/profile_gls/src/main/java/no/nordicsemi/android/gls/main/viewmodel/GLSViewModel.kt @@ -1,19 +1,21 @@ package no.nordicsemi.android.gls.main.viewmodel -import android.util.Log import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel -import kotlinx.coroutines.flow.* +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.onEach import no.nordicsemi.android.analytics.AppAnalytics import no.nordicsemi.android.analytics.Profile import no.nordicsemi.android.analytics.ProfileConnectedEvent import no.nordicsemi.android.gls.GlsDetailsDestinationId -import no.nordicsemi.android.gls.repository.GLSRepository import no.nordicsemi.android.gls.data.GLS_SERVICE_UUID import no.nordicsemi.android.gls.main.view.* +import no.nordicsemi.android.gls.repository.GLSRepository import no.nordicsemi.android.navigation.* -import no.nordicsemi.android.service.SuccessResult +import no.nordicsemi.android.service.ConnectedResult import no.nordicsemi.android.utils.exhaustive import no.nordicsemi.android.utils.getDevice import no.nordicsemi.ui.scanner.DiscoveredBluetoothDevice @@ -61,7 +63,7 @@ internal class GLSViewModel @Inject constructor( repository.downloadData(viewModelScope, device).onEach { _state.value = WorkingState(it) - (it as? SuccessResult)?.let { + (it as? ConnectedResult)?.let { analytics.logEvent(ProfileConnectedEvent(Profile.GLS)) } }.launchIn(viewModelScope) diff --git a/profile_hrs/src/main/java/no/nordicsemi/android/hrs/service/HRSService.kt b/profile_hrs/src/main/java/no/nordicsemi/android/hrs/service/HRSService.kt index ce0077fdf..041668a70 100644 --- a/profile_hrs/src/main/java/no/nordicsemi/android/hrs/service/HRSService.kt +++ b/profile_hrs/src/main/java/no/nordicsemi/android/hrs/service/HRSService.kt @@ -1,6 +1,5 @@ package no.nordicsemi.android.hrs.service -import android.bluetooth.BluetoothDevice import android.content.Intent import androidx.lifecycle.lifecycleScope import dagger.hilt.android.AndroidEntryPoint 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 2c8dd7f31..e88b5b400 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 @@ -9,7 +9,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.hilt.navigation.compose.hiltViewModel import no.nordicsemi.android.hrs.R -import no.nordicsemi.android.hrs.data.HRSData import no.nordicsemi.android.hrs.viewmodel.HRSViewModel import no.nordicsemi.android.service.* import no.nordicsemi.android.theme.view.BackIconAppBar @@ -36,6 +35,7 @@ fun HRSScreen() { is WorkingState -> when (state.result) { is IdleResult, is ConnectingResult -> DeviceConnectingView { viewModel.onEvent(DisconnectEvent) } + is ConnectedResult -> DeviceConnectingView { viewModel.onEvent(DisconnectEvent) } is DisconnectedResult -> DeviceDisconnectedView(Reason.USER, navigateUp) is LinkLossResult -> DeviceDisconnectedView(Reason.LINK_LOSS, navigateUp) is MissingServiceResult -> DeviceDisconnectedView(Reason.MISSING_SERVICE, navigateUp) diff --git a/profile_hrs/src/main/java/no/nordicsemi/android/hrs/viewmodel/HRSViewModel.kt b/profile_hrs/src/main/java/no/nordicsemi/android/hrs/viewmodel/HRSViewModel.kt index 9a9b27f51..d1b06c78c 100644 --- a/profile_hrs/src/main/java/no/nordicsemi/android/hrs/viewmodel/HRSViewModel.kt +++ b/profile_hrs/src/main/java/no/nordicsemi/android/hrs/viewmodel/HRSViewModel.kt @@ -12,7 +12,7 @@ import no.nordicsemi.android.hrs.data.HRS_SERVICE_UUID import no.nordicsemi.android.hrs.service.HRSRepository import no.nordicsemi.android.hrs.view.* import no.nordicsemi.android.navigation.* -import no.nordicsemi.android.service.SuccessResult +import no.nordicsemi.android.service.ConnectedResult import no.nordicsemi.android.utils.exhaustive import no.nordicsemi.android.utils.getDevice import no.nordicsemi.ui.scanner.ScannerDestinationId @@ -39,7 +39,7 @@ internal class HRSViewModel @Inject constructor( val zoomIn = (_state.value as? WorkingState)?.zoomIn ?: false _state.value = WorkingState(it, zoomIn) - (it as? SuccessResult)?.let { + (it as? ConnectedResult)?.let { analytics.logEvent(ProfileConnectedEvent(Profile.HRS)) } }.launchIn(viewModelScope) 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 5d7f71f53..647b487c2 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 @@ -1,6 +1,5 @@ package no.nordicsemi.android.hts.repository -import android.bluetooth.BluetoothDevice import android.content.Intent import androidx.lifecycle.lifecycleScope import dagger.hilt.android.AndroidEntryPoint diff --git a/profile_hts/src/main/java/no/nordicsemi/android/hts/view/HTSContentView.kt b/profile_hts/src/main/java/no/nordicsemi/android/hts/view/HTSContentView.kt index ad845c615..a73e51b83 100644 --- a/profile_hts/src/main/java/no/nordicsemi/android/hts/view/HTSContentView.kt +++ b/profile_hts/src/main/java/no/nordicsemi/android/hts/view/HTSContentView.kt @@ -12,9 +12,9 @@ import androidx.compose.ui.unit.dp import no.nordicsemi.android.hts.R import no.nordicsemi.android.hts.data.HTSData import no.nordicsemi.android.material.you.RadioButtonGroup +import no.nordicsemi.android.material.you.ScreenSection import no.nordicsemi.android.theme.view.BatteryLevelView import no.nordicsemi.android.theme.view.KeyValueField -import no.nordicsemi.android.material.you.ScreenSection import no.nordicsemi.android.theme.view.SectionTitle @Composable 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 1214ab1da..23681f233 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 @@ -9,7 +9,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.hilt.navigation.compose.hiltViewModel import no.nordicsemi.android.hts.R -import no.nordicsemi.android.hts.data.HTSData import no.nordicsemi.android.hts.viewmodel.HTSViewModel import no.nordicsemi.android.service.* import no.nordicsemi.android.theme.view.BackIconAppBar @@ -36,6 +35,7 @@ fun HTSScreen() { is WorkingState -> when (state.htsManagerState.result) { is IdleResult, is ConnectingResult -> DeviceConnectingView { viewModel.onEvent(DisconnectEvent) } + is ConnectedResult -> DeviceConnectingView { viewModel.onEvent(DisconnectEvent) } is DisconnectedResult -> DeviceDisconnectedView(Reason.USER, navigateUp) is LinkLossResult -> DeviceDisconnectedView(Reason.LINK_LOSS, navigateUp) is MissingServiceResult -> DeviceDisconnectedView(Reason.MISSING_SERVICE, navigateUp) 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 dfe398e07..88497d73d 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 @@ -12,7 +12,7 @@ import no.nordicsemi.android.hts.data.HTS_SERVICE_UUID import no.nordicsemi.android.hts.repository.HTSRepository import no.nordicsemi.android.hts.view.* import no.nordicsemi.android.navigation.* -import no.nordicsemi.android.service.SuccessResult +import no.nordicsemi.android.service.ConnectedResult import no.nordicsemi.android.utils.exhaustive import no.nordicsemi.android.utils.getDevice import no.nordicsemi.ui.scanner.ScannerDestinationId @@ -38,7 +38,7 @@ internal class HTSViewModel @Inject constructor( repository.data.onEach { _state.value = _state.value.copy(htsManagerState = WorkingState(it)) - (it as? SuccessResult)?.let { + (it as? ConnectedResult)?.let { analytics.logEvent(ProfileConnectedEvent(Profile.HTS)) } }.launchIn(viewModelScope) diff --git a/profile_prx/src/main/java/no/nordicsemi/android/prx/repository/PRXService.kt b/profile_prx/src/main/java/no/nordicsemi/android/prx/repository/PRXService.kt index 1f440d90d..33c1a9073 100644 --- a/profile_prx/src/main/java/no/nordicsemi/android/prx/repository/PRXService.kt +++ b/profile_prx/src/main/java/no/nordicsemi/android/prx/repository/PRXService.kt @@ -1,6 +1,5 @@ package no.nordicsemi.android.prx.repository -import android.bluetooth.BluetoothDevice import android.content.Intent import androidx.lifecycle.lifecycleScope import dagger.hilt.android.AndroidEntryPoint diff --git a/profile_prx/src/main/java/no/nordicsemi/android/prx/view/PRXLinkLossView.kt b/profile_prx/src/main/java/no/nordicsemi/android/prx/view/PRXLinkLossView.kt index 72ea8000a..dc88ce962 100644 --- a/profile_prx/src/main/java/no/nordicsemi/android/prx/view/PRXLinkLossView.kt +++ b/profile_prx/src/main/java/no/nordicsemi/android/prx/view/PRXLinkLossView.kt @@ -4,6 +4,7 @@ import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.HighlightOff import androidx.compose.material3.Button import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme @@ -14,10 +15,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp +import no.nordicsemi.android.material.you.ScreenSection import no.nordicsemi.android.prx.R import no.nordicsemi.android.theme.R as themeR -import androidx.compose.material.icons.filled.HighlightOff -import no.nordicsemi.android.material.you.ScreenSection @Composable fun DeviceOutOfRangeView(navigateUp: () -> Unit) { 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 ba03da0f6..201c0b066 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 @@ -10,7 +10,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.hilt.navigation.compose.hiltViewModel import no.nordicsemi.android.prx.R -import no.nordicsemi.android.prx.data.PRXData import no.nordicsemi.android.prx.viewmodel.PRXViewModel import no.nordicsemi.android.service.* import no.nordicsemi.android.theme.view.BackIconAppBar @@ -37,6 +36,7 @@ fun PRXScreen() { is WorkingState -> when (state.result) { is IdleResult, is ConnectingResult -> DeviceConnectingView { viewModel.onEvent(DisconnectEvent) } + is ConnectedResult -> DeviceConnectingView { viewModel.onEvent(DisconnectEvent) } is DisconnectedResult -> DeviceDisconnectedView(Reason.USER, navigateUp) is LinkLossResult -> DeviceOutOfRangeView { viewModel.onEvent(DisconnectEvent) } is MissingServiceResult -> DeviceDisconnectedView(Reason.MISSING_SERVICE, navigateUp) diff --git a/profile_prx/src/main/java/no/nordicsemi/android/prx/viewmodel/PRXViewModel.kt b/profile_prx/src/main/java/no/nordicsemi/android/prx/viewmodel/PRXViewModel.kt index f33b8c7d5..6fefaac80 100644 --- a/profile_prx/src/main/java/no/nordicsemi/android/prx/viewmodel/PRXViewModel.kt +++ b/profile_prx/src/main/java/no/nordicsemi/android/prx/viewmodel/PRXViewModel.kt @@ -12,7 +12,7 @@ import no.nordicsemi.android.navigation.* import no.nordicsemi.android.prx.data.PRX_SERVICE_UUID import no.nordicsemi.android.prx.repository.PRXRepository import no.nordicsemi.android.prx.view.* -import no.nordicsemi.android.service.SuccessResult +import no.nordicsemi.android.service.ConnectedResult import no.nordicsemi.android.utils.exhaustive import no.nordicsemi.android.utils.getDevice import no.nordicsemi.ui.scanner.ScannerDestinationId @@ -38,7 +38,7 @@ internal class PRXViewModel @Inject constructor( repository.data.onEach { _state.value = WorkingState(it) - (it as? SuccessResult)?.let { + (it as? ConnectedResult)?.let { analytics.logEvent(ProfileConnectedEvent(Profile.PRX)) } }.launchIn(viewModelScope) diff --git a/profile_rscs/src/main/java/no/nordicsemi/android/rscs/repository/RSCSService.kt b/profile_rscs/src/main/java/no/nordicsemi/android/rscs/repository/RSCSService.kt index 6c05e241d..d0b8356ae 100644 --- a/profile_rscs/src/main/java/no/nordicsemi/android/rscs/repository/RSCSService.kt +++ b/profile_rscs/src/main/java/no/nordicsemi/android/rscs/repository/RSCSService.kt @@ -1,6 +1,5 @@ package no.nordicsemi.android.rscs.repository -import android.bluetooth.BluetoothDevice import android.content.Intent import androidx.lifecycle.lifecycleScope import dagger.hilt.android.AndroidEntryPoint 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 5ae9b66e3..01101c855 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 @@ -9,7 +9,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.hilt.navigation.compose.hiltViewModel import no.nordicsemi.android.rscs.R -import no.nordicsemi.android.rscs.data.RSCSData import no.nordicsemi.android.rscs.viewmodel.RSCSViewModel import no.nordicsemi.android.service.* import no.nordicsemi.android.theme.view.BackIconAppBar @@ -36,6 +35,7 @@ fun RSCSScreen() { is WorkingState -> when (state.result) { is IdleResult, is ConnectingResult -> DeviceConnectingView { viewModel.onEvent(DisconnectEvent) } + is ConnectedResult -> DeviceConnectingView { viewModel.onEvent(DisconnectEvent) } is DisconnectedResult -> DeviceDisconnectedView(Reason.USER, navigateUp) is LinkLossResult -> DeviceDisconnectedView(Reason.LINK_LOSS, navigateUp) is MissingServiceResult -> DeviceDisconnectedView(Reason.MISSING_SERVICE, navigateUp) diff --git a/profile_rscs/src/main/java/no/nordicsemi/android/rscs/viewmodel/RSCSViewModel.kt b/profile_rscs/src/main/java/no/nordicsemi/android/rscs/viewmodel/RSCSViewModel.kt index afa9e7d14..98d335db8 100644 --- a/profile_rscs/src/main/java/no/nordicsemi/android/rscs/viewmodel/RSCSViewModel.kt +++ b/profile_rscs/src/main/java/no/nordicsemi/android/rscs/viewmodel/RSCSViewModel.kt @@ -12,7 +12,7 @@ import no.nordicsemi.android.navigation.* import no.nordicsemi.android.rscs.data.RSCS_SERVICE_UUID import no.nordicsemi.android.rscs.repository.RSCSRepository import no.nordicsemi.android.rscs.view.* -import no.nordicsemi.android.service.SuccessResult +import no.nordicsemi.android.service.ConnectedResult import no.nordicsemi.android.utils.exhaustive import no.nordicsemi.android.utils.getDevice import no.nordicsemi.ui.scanner.ScannerDestinationId @@ -38,7 +38,7 @@ internal class RSCSViewModel @Inject constructor( repository.data.onEach { _state.value = WorkingState(it) - (it as? SuccessResult)?.let { + (it as? ConnectedResult)?.let { analytics.logEvent(ProfileConnectedEvent(Profile.RSCS)) } }.launchIn(viewModelScope) diff --git a/profile_uart/src/main/java/no/nordicsemi/android/uart/data/UARTManager.kt b/profile_uart/src/main/java/no/nordicsemi/android/uart/data/UARTManager.kt index 470b9f94f..b58fa8fc4 100644 --- a/profile_uart/src/main/java/no/nordicsemi/android/uart/data/UARTManager.kt +++ b/profile_uart/src/main/java/no/nordicsemi/android/uart/data/UARTManager.kt @@ -26,12 +26,10 @@ import android.bluetooth.BluetoothGatt import android.bluetooth.BluetoothGattCharacteristic import android.bluetooth.BluetoothGattService import android.content.Context -import android.text.TextUtils import android.util.Log import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.* -import kotlinx.coroutines.withContext import no.nordicsemi.android.ble.BleManager import no.nordicsemi.android.ble.WriteRequest import no.nordicsemi.android.ble.common.callback.battery.BatteryLevelResponse diff --git a/profile_uart/src/main/java/no/nordicsemi/android/uart/repository/UARTService.kt b/profile_uart/src/main/java/no/nordicsemi/android/uart/repository/UARTService.kt index 3f2419585..da2fdee20 100644 --- a/profile_uart/src/main/java/no/nordicsemi/android/uart/repository/UARTService.kt +++ b/profile_uart/src/main/java/no/nordicsemi/android/uart/repository/UARTService.kt @@ -1,6 +1,5 @@ package no.nordicsemi.android.uart.repository -import android.bluetooth.BluetoothDevice import android.content.Intent import androidx.lifecycle.lifecycleScope import dagger.hilt.android.AndroidEntryPoint diff --git a/profile_uart/src/main/java/no/nordicsemi/android/uart/view/UARTAddMacroDialog.kt b/profile_uart/src/main/java/no/nordicsemi/android/uart/view/UARTAddMacroDialog.kt index 11ce0563e..ca01b6f47 100644 --- a/profile_uart/src/main/java/no/nordicsemi/android/uart/view/UARTAddMacroDialog.kt +++ b/profile_uart/src/main/java/no/nordicsemi/android/uart/view/UARTAddMacroDialog.kt @@ -1,6 +1,8 @@ package no.nordicsemi.android.uart.view -import androidx.compose.foundation.* +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.GridItemSpan 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 c8905addd..73e9b9974 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 @@ -38,6 +38,7 @@ fun UARTScreen() { is WorkingState -> when (state.uartManagerState.result) { is IdleResult, is ConnectingResult -> Scroll { DeviceConnectingView { viewModel.onEvent(DisconnectEvent) } } + is ConnectedResult -> Scroll { DeviceConnectingView { viewModel.onEvent(DisconnectEvent) } } is DisconnectedResult -> Scroll { DeviceDisconnectedView(Reason.USER, navigateUp) } is LinkLossResult -> Scroll { DeviceDisconnectedView(Reason.LINK_LOSS, navigateUp) } is MissingServiceResult -> Scroll { DeviceDisconnectedView(Reason.MISSING_SERVICE, navigateUp) } diff --git a/profile_uart/src/main/java/no/nordicsemi/android/uart/viewmodel/UARTViewModel.kt b/profile_uart/src/main/java/no/nordicsemi/android/uart/viewmodel/UARTViewModel.kt index 87fa9e510..bf42af274 100644 --- a/profile_uart/src/main/java/no/nordicsemi/android/uart/viewmodel/UARTViewModel.kt +++ b/profile_uart/src/main/java/no/nordicsemi/android/uart/viewmodel/UARTViewModel.kt @@ -8,10 +8,9 @@ import kotlinx.coroutines.flow.* import kotlinx.coroutines.launch import no.nordicsemi.android.analytics.* import no.nordicsemi.android.navigation.* +import no.nordicsemi.android.service.ConnectedResult import no.nordicsemi.android.service.IdleResult -import no.nordicsemi.android.service.SuccessResult import no.nordicsemi.android.uart.data.* -import no.nordicsemi.android.uart.data.UARTPersistentDataSource import no.nordicsemi.android.uart.repository.UARTRepository import no.nordicsemi.android.uart.view.* import no.nordicsemi.android.utils.exhaustive @@ -43,7 +42,7 @@ internal class UARTViewModel @Inject constructor( } _state.value = _state.value.copy(uartManagerState = WorkingState(it)) - (it as? SuccessResult)?.let { + (it as? ConnectedResult)?.let { analytics.logEvent(ProfileConnectedEvent(Profile.UART)) } }.launchIn(viewModelScope) diff --git a/settings.gradle b/settings.gradle index 087be52ce..7f91558c9 100644 --- a/settings.gradle +++ b/settings.gradle @@ -15,10 +15,11 @@ dependencyResolutionManagement { library('nordic-log', 'no.nordicsemi.android:log:2.3.0') - version('commonlibraries', '1.0.8') + version('commonlibraries', '1.0.11') library('nordic-ui-scanner', 'no.nordicsemi.android.common', 'uiscanner').versionRef('commonlibraries') library('nordic-navigation', 'no.nordicsemi.android.common', 'navigation').versionRef('commonlibraries') library('nordic-theme', 'no.nordicsemi.android.common', 'theme').versionRef('commonlibraries') + library('nordic-analytics', 'no.nordicsemi.android.common', 'analytics').versionRef('commonlibraries') library('nordic-ui-logger', 'no.nordicsemi.android.common', 'uilogger').versionRef('commonlibraries') library('localbroadcastmanager', 'androidx.localbroadcastmanager:localbroadcastmanager:1.1.0')