Add analytics to UART profile

This commit is contained in:
Sylwester Zieliński
2022-05-10 16:18:42 +02:00
parent 7293e8f124
commit 15ba0f244f
3 changed files with 36 additions and 8 deletions

View File

@@ -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)

View File

@@ -16,3 +16,8 @@ enum class Link(val displayName: String) {
DFU("DFU"),
LOGGER("LOGGER");
}
enum class UARTMode(val displayName: String) {
MACRO("MACRO"),
TEXT("TEXT")
}

View File

@@ -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) {