1
1
package com.woocommerce.android.ui.woopos.settings
2
2
3
3
import androidx.lifecycle.ViewModel
4
+ import androidx.lifecycle.viewModelScope
4
5
import com.woocommerce.android.ui.woopos.home.WooPosHomeState
5
6
import com.woocommerce.android.ui.woopos.settings.categories.WooPosSettingsCategory
7
+ import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.HardwareTapped
8
+ import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.HelpTapped
9
+ import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.SettingsClosed
10
+ import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.SettingsOpened
11
+ import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.StoreDetailsTapped
12
+ import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsTracker
6
13
import dagger.hilt.android.lifecycle.HiltViewModel
7
14
import kotlinx.coroutines.flow.MutableStateFlow
8
15
import kotlinx.coroutines.flow.StateFlow
9
16
import kotlinx.coroutines.flow.asStateFlow
10
17
import kotlinx.coroutines.flow.update
18
+ import kotlinx.coroutines.launch
11
19
import javax.inject.Inject
12
20
13
21
@HiltViewModel
14
- class WooPosSettingsViewModel @Inject constructor() : ViewModel() {
22
+ class WooPosSettingsViewModel @Inject constructor(
23
+ private val analyticsTracker : WooPosAnalyticsTracker
24
+ ) : ViewModel() {
15
25
private val _state = MutableStateFlow (WooPosSettingsState ())
16
26
val state: StateFlow <WooPosSettingsState > = _state .asStateFlow()
17
27
18
28
fun onCategorySelected (category : WooPosSettingsCategory ) {
29
+ trackCategorySelection(category)
19
30
_state .update { currentState ->
20
31
currentState.copy(
21
32
selectedCategory = category,
@@ -24,6 +35,17 @@ class WooPosSettingsViewModel @Inject constructor() : ViewModel() {
24
35
}
25
36
}
26
37
38
+ private fun trackCategorySelection (category : WooPosSettingsCategory ) {
39
+ val event = when (category) {
40
+ WooPosSettingsCategory .STORE -> StoreDetailsTapped
41
+ WooPosSettingsCategory .HARDWARE -> HardwareTapped
42
+ WooPosSettingsCategory .HELP -> HelpTapped
43
+ }
44
+ viewModelScope.launch {
45
+ analyticsTracker.track(event)
46
+ }
47
+ }
48
+
27
49
fun navigateToDetail (destination : WooPosSettingsDetailDestination ) {
28
50
_state .update { currentState ->
29
51
currentState.copy(currentDestination = destination)
@@ -58,4 +80,16 @@ class WooPosSettingsViewModel @Inject constructor() : ViewModel() {
58
80
currentState.copy(dialogState = WooPosHomeState .DialogState .Hidden )
59
81
}
60
82
}
83
+
84
+ fun onSettingsOpened () {
85
+ viewModelScope.launch {
86
+ analyticsTracker.track(SettingsOpened )
87
+ }
88
+ }
89
+
90
+ fun onSettingsClosed () {
91
+ viewModelScope.launch {
92
+ analyticsTracker.track(SettingsClosed )
93
+ }
94
+ }
61
95
}
0 commit comments