diff --git a/lib_analytics/src/main/java/no/nordicsemi/android/analytics/Events.kt b/lib_analytics/src/main/java/no/nordicsemi/android/analytics/Events.kt index 2363126f..9a4aaf21 100644 --- a/lib_analytics/src/main/java/no/nordicsemi/android/analytics/Events.kt +++ b/lib_analytics/src/main/java/no/nordicsemi/android/analytics/Events.kt @@ -33,3 +33,18 @@ const val PROFILE_PARAM_KEY = "PROFILE_NAME" private fun createBundle(name: String): Bundle { return Bundle().apply { putString(PROFILE_PARAM_KEY, name) } } + +sealed class UARTAnalyticsEvent(eventName: String, params: Bundle?) : FirebaseEvent(eventName, params) + +class UARTSendAnalyticsEvent(mode: UARTMode) : UARTAnalyticsEvent("UART_SEND_EVENT", createParams(mode)) { + + companion object { + fun createParams(mode: UARTMode) = Bundle().apply { + putString("MODE", mode.displayName) + } + } +} + +class UARTCreateConfiguration : UARTAnalyticsEvent("UART_CREATE_CONF", null) + +class UARTChangeConfiguration : UARTAnalyticsEvent("UART_CHANGE_CONF", null) diff --git a/lib_analytics/src/main/java/no/nordicsemi/android/analytics/Profiles.kt b/lib_analytics/src/main/java/no/nordicsemi/android/analytics/Profiles.kt index fe967dbd..bac24535 100644 --- a/lib_analytics/src/main/java/no/nordicsemi/android/analytics/Profiles.kt +++ b/lib_analytics/src/main/java/no/nordicsemi/android/analytics/Profiles.kt @@ -16,3 +16,8 @@ enum class Link(val displayName: String) { DFU("DFU"), LOGGER("LOGGER"); } + +enum class UARTMode(val displayName: String) { + MACRO("MACRO"), + TEXT("TEXT") +} \ No newline at end of file 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 8b593c8a..87fa9e51 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 @@ -6,16 +6,12 @@ import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.* import kotlinx.coroutines.launch -import no.nordicsemi.android.analytics.AppAnalytics -import no.nordicsemi.android.analytics.Profile -import no.nordicsemi.android.analytics.ProfileConnectedEvent +import no.nordicsemi.android.analytics.* import no.nordicsemi.android.navigation.* import no.nordicsemi.android.service.IdleResult import no.nordicsemi.android.service.SuccessResult -import no.nordicsemi.android.uart.data.UARTConfiguration -import no.nordicsemi.android.uart.data.UARTMacro +import no.nordicsemi.android.uart.data.* import no.nordicsemi.android.uart.data.UARTPersistentDataSource -import no.nordicsemi.android.uart.data.UART_SERVICE_UUID import no.nordicsemi.android.uart.repository.UARTRepository import no.nordicsemi.android.uart.view.* import no.nordicsemi.android.utils.exhaustive @@ -85,7 +81,7 @@ internal class UARTViewModel @Inject constructor( is OnCreateMacro -> addNewMacro(event.macro) OnDeleteMacro -> deleteMacro() DisconnectEvent -> disconnect() - is OnRunMacro -> repository.runMacro(event.macro) + is OnRunMacro -> runMacro(event.macro) NavigateUp -> navigationManager.navigateUp() is OnEditMacro -> onEditMacro(event) OnEditFinish -> onEditFinish() @@ -95,11 +91,21 @@ internal class UARTViewModel @Inject constructor( OnEditConfiguration -> onEditConfiguration() ClearOutputItems -> repository.clearItems() OpenLogger -> repository.openLogger() - is OnRunInput -> repository.sendText(event.text, event.newLineChar) + is OnRunInput -> sendText(event.text, event.newLineChar) MacroInputSwitchClick -> onMacroInputSwitch() }.exhaustive } + private fun runMacro(macro: UARTMacro) { + repository.runMacro(macro) + analytics.logEvent(UARTSendAnalyticsEvent(UARTMode.MACRO)) + } + + private fun sendText(text: String, newLineChar: MacroEol) { + repository.sendText(text, newLineChar) + analytics.logEvent(UARTSendAnalyticsEvent(UARTMode.TEXT)) + } + private fun onMacroInputSwitch() { _state.value = _state.value.copy(isInputVisible = !state.value.isInputVisible) } @@ -115,6 +121,7 @@ internal class UARTViewModel @Inject constructor( _state.value = _state.value.copy(selectedConfigurationName = event.name) } saveLastConfigurationName(event.name) + analytics.logEvent(UARTCreateConfiguration()) } private fun onEditMacro(event: OnEditMacro) { @@ -127,6 +134,7 @@ internal class UARTViewModel @Inject constructor( private fun onConfigurationSelected(event: OnConfigurationSelected) { saveLastConfigurationName(event.configuration.name) + analytics.logEvent(UARTChangeConfiguration()) } private fun saveLastConfigurationName(name: String) {