mirror of
https://github.com/aljazceru/Android-nRF-Toolbox.git
synced 2026-02-06 07:14:34 +01:00
Add analytics events after successful connection
This commit is contained in:
@@ -22,3 +22,15 @@ enum class ProfileOpenEvent(override val eventName: String) : AppEvent {
|
||||
DFU("DFU_PROFILE_OPEN"),
|
||||
LOGGER("LOGGER_PROFILE_OPEN"),
|
||||
}
|
||||
|
||||
enum class ProfileConnectedEvent(override val eventName: String) : AppEvent {
|
||||
BPS("BPS_CONNECTED"),
|
||||
CGMS("CGMS_CONNECTED"),
|
||||
CSC("CSC_CONNECTED"),
|
||||
GLS("GLS_CONNECTED"),
|
||||
HRS("HRS_CONNECTED"),
|
||||
HTS("HTS_CONNECTED"),
|
||||
PRX("PRX_CONNECTED"),
|
||||
RSCS("RSCS_CONNECTED"),
|
||||
UART("UART_CONNECTED"),
|
||||
}
|
||||
@@ -2,6 +2,7 @@ apply from: rootProject.file("library.gradle")
|
||||
apply plugin: 'kotlin-parcelize'
|
||||
|
||||
dependencies {
|
||||
implementation project(":lib_analytics")
|
||||
implementation project(":lib_service")
|
||||
implementation project(":lib_theme")
|
||||
implementation project(":lib_utils")
|
||||
|
||||
@@ -7,10 +7,13 @@ 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.ProfileConnectedEvent
|
||||
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.utils.exhaustive
|
||||
import no.nordicsemi.android.utils.getDevice
|
||||
import no.nordicsemi.ui.scanner.DiscoveredBluetoothDevice
|
||||
@@ -20,7 +23,8 @@ import javax.inject.Inject
|
||||
@HiltViewModel
|
||||
internal class BPSViewModel @Inject constructor(
|
||||
private val repository: BPSRepository,
|
||||
private val navigationManager: NavigationManager
|
||||
private val navigationManager: NavigationManager,
|
||||
private val analytics: AppAnalytics
|
||||
) : ViewModel() {
|
||||
|
||||
private val _state = MutableStateFlow<BPSViewState>(NoDeviceState)
|
||||
@@ -53,6 +57,10 @@ internal class BPSViewModel @Inject constructor(
|
||||
private fun connectDevice(device: DiscoveredBluetoothDevice) {
|
||||
repository.downloadData(device).onEach {
|
||||
_state.value = WorkingState(it)
|
||||
|
||||
(it as? SuccessResult)?.let {
|
||||
analytics.logEvent(ProfileConnectedEvent.BPS)
|
||||
}
|
||||
}.launchIn(viewModelScope)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ android {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation project(":lib_analytics")
|
||||
implementation project(":lib_service")
|
||||
implementation project(":lib_theme")
|
||||
implementation project(":lib_utils")
|
||||
|
||||
@@ -5,11 +5,14 @@ import androidx.lifecycle.viewModelScope
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import no.nordicsemi.android.analytics.AppAnalytics
|
||||
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.view.*
|
||||
import no.nordicsemi.android.navigation.*
|
||||
import no.nordicsemi.android.service.SuccessResult
|
||||
import no.nordicsemi.android.utils.exhaustive
|
||||
import no.nordicsemi.android.utils.getDevice
|
||||
import no.nordicsemi.ui.scanner.ScannerDestinationId
|
||||
@@ -18,7 +21,8 @@ import javax.inject.Inject
|
||||
@HiltViewModel
|
||||
internal class CGMViewModel @Inject constructor(
|
||||
private val repository: CGMRepository,
|
||||
private val navigationManager: NavigationManager
|
||||
private val navigationManager: NavigationManager,
|
||||
private val analytics: AppAnalytics
|
||||
) : ViewModel() {
|
||||
|
||||
private val _state = MutableStateFlow<CGMViewState>(NoDeviceState)
|
||||
@@ -33,6 +37,10 @@ internal class CGMViewModel @Inject constructor(
|
||||
|
||||
repository.data.onEach {
|
||||
_state.value = WorkingState(it)
|
||||
|
||||
(it as? SuccessResult)?.let {
|
||||
analytics.logEvent(ProfileConnectedEvent.CGMS)
|
||||
}
|
||||
}.launchIn(viewModelScope)
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ apply from: rootProject.file("library.gradle")
|
||||
apply plugin: 'kotlin-parcelize'
|
||||
|
||||
dependencies {
|
||||
implementation project(":lib_analytics")
|
||||
implementation project(":lib_service")
|
||||
implementation project(":lib_theme")
|
||||
implementation project(":lib_utils")
|
||||
|
||||
@@ -5,10 +5,13 @@ import androidx.lifecycle.viewModelScope
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import no.nordicsemi.android.analytics.AppAnalytics
|
||||
import no.nordicsemi.android.analytics.ProfileConnectedEvent
|
||||
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.utils.exhaustive
|
||||
import no.nordicsemi.android.utils.getDevice
|
||||
import no.nordicsemi.ui.scanner.ScannerDestinationId
|
||||
@@ -17,7 +20,8 @@ import javax.inject.Inject
|
||||
@HiltViewModel
|
||||
internal class CSCViewModel @Inject constructor(
|
||||
private val repository: CSCRepository,
|
||||
private val navigationManager: NavigationManager
|
||||
private val navigationManager: NavigationManager,
|
||||
private val analytics: AppAnalytics
|
||||
) : ViewModel() {
|
||||
|
||||
private val _state = MutableStateFlow(CSCViewState())
|
||||
@@ -32,6 +36,10 @@ internal class CSCViewModel @Inject constructor(
|
||||
|
||||
repository.data.onEach {
|
||||
_state.value = _state.value.copy(cscManagerState = WorkingState(it))
|
||||
|
||||
(it as? SuccessResult)?.let {
|
||||
analytics.logEvent(ProfileConnectedEvent.CSC)
|
||||
}
|
||||
}.launchIn(viewModelScope)
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ android {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation project(":lib_analytics")
|
||||
implementation project(":lib_service")
|
||||
implementation project(":lib_theme")
|
||||
implementation project(":lib_utils")
|
||||
|
||||
@@ -4,11 +4,14 @@ import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.flow.*
|
||||
import no.nordicsemi.android.analytics.AppAnalytics
|
||||
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.navigation.*
|
||||
import no.nordicsemi.android.service.SuccessResult
|
||||
import no.nordicsemi.android.utils.exhaustive
|
||||
import no.nordicsemi.android.utils.getDevice
|
||||
import no.nordicsemi.ui.scanner.DiscoveredBluetoothDevice
|
||||
@@ -18,7 +21,8 @@ import javax.inject.Inject
|
||||
@HiltViewModel
|
||||
internal class GLSViewModel @Inject constructor(
|
||||
private val repository: GLSRepository,
|
||||
private val navigationManager: NavigationManager
|
||||
private val navigationManager: NavigationManager,
|
||||
private val analytics: AppAnalytics
|
||||
) : ViewModel() {
|
||||
|
||||
private val _state = MutableStateFlow<GLSViewState>(NoDeviceState)
|
||||
@@ -54,6 +58,10 @@ internal class GLSViewModel @Inject constructor(
|
||||
private fun connectDevice(device: DiscoveredBluetoothDevice) {
|
||||
repository.downloadData(device).onEach {
|
||||
_state.value = WorkingState(it)
|
||||
|
||||
(it as? SuccessResult)?.let {
|
||||
analytics.logEvent(ProfileConnectedEvent.GLS)
|
||||
}
|
||||
}.launchIn(viewModelScope)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ android {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation project(":lib_analytics")
|
||||
implementation project(":lib_service")
|
||||
implementation project(":lib_theme")
|
||||
implementation project(":lib_utils")
|
||||
|
||||
@@ -5,10 +5,13 @@ import androidx.lifecycle.viewModelScope
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import no.nordicsemi.android.analytics.AppAnalytics
|
||||
import no.nordicsemi.android.analytics.ProfileConnectedEvent
|
||||
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.utils.exhaustive
|
||||
import no.nordicsemi.android.utils.getDevice
|
||||
import no.nordicsemi.ui.scanner.ScannerDestinationId
|
||||
@@ -17,7 +20,8 @@ import javax.inject.Inject
|
||||
@HiltViewModel
|
||||
internal class HRSViewModel @Inject constructor(
|
||||
private val repository: HRSRepository,
|
||||
private val navigationManager: NavigationManager
|
||||
private val navigationManager: NavigationManager,
|
||||
private val analytics: AppAnalytics
|
||||
) : ViewModel() {
|
||||
|
||||
private val _state = MutableStateFlow<HRSViewState>(NoDeviceState)
|
||||
@@ -33,6 +37,10 @@ internal class HRSViewModel @Inject constructor(
|
||||
repository.data.onEach {
|
||||
val zoomIn = (_state.value as? WorkingState)?.zoomIn ?: false
|
||||
_state.value = WorkingState(it, zoomIn)
|
||||
|
||||
(it as? SuccessResult)?.let {
|
||||
analytics.logEvent(ProfileConnectedEvent.HRS)
|
||||
}
|
||||
}.launchIn(viewModelScope)
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ apply from: rootProject.file("library.gradle")
|
||||
apply plugin: 'kotlin-parcelize'
|
||||
|
||||
dependencies {
|
||||
implementation project(":lib_analytics")
|
||||
implementation project(":lib_service")
|
||||
implementation project(":lib_theme")
|
||||
implementation project(":lib_utils")
|
||||
|
||||
@@ -5,10 +5,13 @@ import androidx.lifecycle.viewModelScope
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import no.nordicsemi.android.analytics.AppAnalytics
|
||||
import no.nordicsemi.android.analytics.ProfileConnectedEvent
|
||||
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.utils.exhaustive
|
||||
import no.nordicsemi.android.utils.getDevice
|
||||
import no.nordicsemi.ui.scanner.ScannerDestinationId
|
||||
@@ -17,7 +20,8 @@ import javax.inject.Inject
|
||||
@HiltViewModel
|
||||
internal class HTSViewModel @Inject constructor(
|
||||
private val repository: HTSRepository,
|
||||
private val navigationManager: NavigationManager
|
||||
private val navigationManager: NavigationManager,
|
||||
private val analytics: AppAnalytics
|
||||
) : ViewModel() {
|
||||
|
||||
private val _state = MutableStateFlow(HTSViewState())
|
||||
@@ -32,6 +36,10 @@ internal class HTSViewModel @Inject constructor(
|
||||
|
||||
repository.data.onEach {
|
||||
_state.value = _state.value.copy(htsManagerState = WorkingState(it))
|
||||
|
||||
(it as? SuccessResult)?.let {
|
||||
analytics.logEvent(ProfileConnectedEvent.HTS)
|
||||
}
|
||||
}.launchIn(viewModelScope)
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ android {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation project(":lib_analytics")
|
||||
implementation project(":lib_service")
|
||||
implementation project(":lib_theme")
|
||||
implementation project(":lib_utils")
|
||||
|
||||
@@ -5,10 +5,13 @@ import androidx.lifecycle.viewModelScope
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import no.nordicsemi.android.analytics.AppAnalytics
|
||||
import no.nordicsemi.android.analytics.ProfileConnectedEvent
|
||||
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.utils.exhaustive
|
||||
import no.nordicsemi.android.utils.getDevice
|
||||
import no.nordicsemi.ui.scanner.ScannerDestinationId
|
||||
@@ -17,7 +20,8 @@ import javax.inject.Inject
|
||||
@HiltViewModel
|
||||
internal class PRXViewModel @Inject constructor(
|
||||
private val repository: PRXRepository,
|
||||
private val navigationManager: NavigationManager
|
||||
private val navigationManager: NavigationManager,
|
||||
private val analytics: AppAnalytics
|
||||
) : ViewModel() {
|
||||
|
||||
private val _state = MutableStateFlow<PRXViewState>(NoDeviceState)
|
||||
@@ -32,6 +36,10 @@ internal class PRXViewModel @Inject constructor(
|
||||
|
||||
repository.data.onEach {
|
||||
_state.value = WorkingState(it)
|
||||
|
||||
(it as? SuccessResult)?.let {
|
||||
analytics.logEvent(ProfileConnectedEvent.PRX)
|
||||
}
|
||||
}.launchIn(viewModelScope)
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ android {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation project(":lib_analytics")
|
||||
implementation project(":lib_service")
|
||||
implementation project(":lib_theme")
|
||||
implementation project(":lib_utils")
|
||||
|
||||
@@ -5,10 +5,13 @@ import androidx.lifecycle.viewModelScope
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import no.nordicsemi.android.analytics.AppAnalytics
|
||||
import no.nordicsemi.android.analytics.ProfileConnectedEvent
|
||||
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.utils.exhaustive
|
||||
import no.nordicsemi.android.utils.getDevice
|
||||
import no.nordicsemi.ui.scanner.ScannerDestinationId
|
||||
@@ -17,7 +20,8 @@ import javax.inject.Inject
|
||||
@HiltViewModel
|
||||
internal class RSCSViewModel @Inject constructor(
|
||||
private val repository: RSCSRepository,
|
||||
private val navigationManager: NavigationManager
|
||||
private val navigationManager: NavigationManager,
|
||||
private val analytics: AppAnalytics
|
||||
) : ViewModel() {
|
||||
|
||||
private val _state = MutableStateFlow<RSCSViewState>(NoDeviceState)
|
||||
@@ -32,6 +36,10 @@ internal class RSCSViewModel @Inject constructor(
|
||||
|
||||
repository.data.onEach {
|
||||
_state.value = WorkingState(it)
|
||||
|
||||
(it as? SuccessResult)?.let {
|
||||
analytics.logEvent(ProfileConnectedEvent.RSCS)
|
||||
}
|
||||
}.launchIn(viewModelScope)
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ protobuf {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation project(":lib_analytics")
|
||||
implementation project(":lib_service")
|
||||
implementation project(":lib_theme")
|
||||
implementation project(":lib_utils")
|
||||
|
||||
@@ -6,8 +6,11 @@ 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.ProfileConnectedEvent
|
||||
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.UARTPersistentDataSource
|
||||
@@ -23,7 +26,8 @@ import javax.inject.Inject
|
||||
internal class UARTViewModel @Inject constructor(
|
||||
private val repository: UARTRepository,
|
||||
private val navigationManager: NavigationManager,
|
||||
private val dataSource: UARTPersistentDataSource
|
||||
private val dataSource: UARTPersistentDataSource,
|
||||
private val analytics: AppAnalytics
|
||||
) : ViewModel() {
|
||||
|
||||
private val _state = MutableStateFlow(UARTViewState())
|
||||
@@ -41,6 +45,10 @@ internal class UARTViewModel @Inject constructor(
|
||||
return@onEach
|
||||
}
|
||||
_state.value = _state.value.copy(uartManagerState = WorkingState(it))
|
||||
|
||||
(it as? SuccessResult)?.let {
|
||||
analytics.logEvent(ProfileConnectedEvent.UART)
|
||||
}
|
||||
}.launchIn(viewModelScope)
|
||||
|
||||
dataSource.getConfigurations().onEach {
|
||||
|
||||
Reference in New Issue
Block a user