Skip to content

Commit 313cd18

Browse files
authored
Merge pull request #14497 from woocommerce/woomob-1128-woo-possettings-implement-analytics-events
[WOOMOB-1128][Woo POS][Settings] Implement analytics events
2 parents e1ac335 + 23a8c8f commit 313cd18

File tree

4 files changed

+72
-2
lines changed

4 files changed

+72
-2
lines changed

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/home/cart/WooPosCartViewModel.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent
3535
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.BackToCartTapped
3636
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.CheckoutTapped
3737
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.ClearCartTapped
38+
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.EmptyCartSetUpScannerTapped
3839
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.InteractionWithCustomerStarted
3940
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.ItemRemovedFromCart
4041
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEventConstant
@@ -135,6 +136,9 @@ class WooPosCartViewModel @Inject constructor(
135136
}
136137

137138
WooPosCartUIEvent.BarcodeSetupClicked -> {
139+
viewModelScope.launch {
140+
analyticsTracker.track(EmptyCartSetUpScannerTapped)
141+
}
138142
sendEventToParent(ChildToParentEvent.SetupBarcodeScannerClicked)
139143
}
140144
}

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/settings/WooPosSettingsScreen.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import androidx.compose.foundation.layout.padding
1010
import androidx.compose.foundation.layout.statusBarsPadding
1111
import androidx.compose.material3.MaterialTheme
1212
import androidx.compose.runtime.Composable
13+
import androidx.compose.runtime.LaunchedEffect
1314
import androidx.compose.runtime.collectAsState
1415
import androidx.compose.runtime.getValue
1516
import androidx.compose.ui.Modifier
@@ -34,7 +35,14 @@ fun WooPosSettingsScreen(onNavigationEvent: (WooPosNavigationEvent) -> Unit) {
3435
val containerViewModel: WooPosSettingsViewModel = hiltViewModel()
3536
val state by containerViewModel.state.collectAsState()
3637

37-
BackHandler { onNavigationEvent(WooPosNavigationEvent.GoBack) }
38+
LaunchedEffect(Unit) {
39+
containerViewModel.onSettingsOpened()
40+
}
41+
42+
BackHandler {
43+
containerViewModel.onSettingsClosed()
44+
onNavigationEvent(WooPosNavigationEvent.GoBack)
45+
}
3846

3947
Row(
4048
modifier = Modifier.fillMaxSize()

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/settings/WooPosSettingsViewModel.kt

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,32 @@
11
package com.woocommerce.android.ui.woopos.settings
22

33
import androidx.lifecycle.ViewModel
4+
import androidx.lifecycle.viewModelScope
45
import com.woocommerce.android.ui.woopos.home.WooPosHomeState
56
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
613
import dagger.hilt.android.lifecycle.HiltViewModel
714
import kotlinx.coroutines.flow.MutableStateFlow
815
import kotlinx.coroutines.flow.StateFlow
916
import kotlinx.coroutines.flow.asStateFlow
1017
import kotlinx.coroutines.flow.update
18+
import kotlinx.coroutines.launch
1119
import javax.inject.Inject
1220

1321
@HiltViewModel
14-
class WooPosSettingsViewModel @Inject constructor() : ViewModel() {
22+
class WooPosSettingsViewModel @Inject constructor(
23+
private val analyticsTracker: WooPosAnalyticsTracker
24+
) : ViewModel() {
1525
private val _state = MutableStateFlow(WooPosSettingsState())
1626
val state: StateFlow<WooPosSettingsState> = _state.asStateFlow()
1727

1828
fun onCategorySelected(category: WooPosSettingsCategory) {
29+
trackCategorySelection(category)
1930
_state.update { currentState ->
2031
currentState.copy(
2132
selectedCategory = category,
@@ -24,6 +35,17 @@ class WooPosSettingsViewModel @Inject constructor() : ViewModel() {
2435
}
2536
}
2637

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+
2749
fun navigateToDetail(destination: WooPosSettingsDetailDestination) {
2850
_state.update { currentState ->
2951
currentState.copy(currentDestination = destination)
@@ -58,4 +80,16 @@ class WooPosSettingsViewModel @Inject constructor() : ViewModel() {
5880
currentState.copy(dialogState = WooPosHomeState.DialogState.Hidden)
5981
}
6082
}
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+
}
6195
}

WooCommerce/src/main/kotlin/com/woocommerce/android/ui/woopos/util/analytics/WooPosAnalyticsEvent.kt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,30 @@ sealed class WooPosAnalyticsEvent : IAnalyticsEvent {
339339
override val name: String = "simple_products_explanation_dialog_shown"
340340
}
341341

342+
data object SettingsOpened : Event() {
343+
override val name: String = "settings_opened"
344+
}
345+
346+
data object SettingsClosed : Event() {
347+
override val name: String = "settings_closed"
348+
}
349+
350+
data object StoreDetailsTapped : Event() {
351+
override val name: String = "store_details_tapped"
352+
}
353+
354+
data object HardwareTapped : Event() {
355+
override val name: String = "hardware_tapped"
356+
}
357+
358+
data object HelpTapped : Event() {
359+
override val name: String = "help_tapped"
360+
}
361+
362+
data object EmptyCartSetUpScannerTapped : Event() {
363+
override val name: String = "empty_cart_set_up_scanner_tapped"
364+
}
365+
342366
data object BarcodeScannerSetupFlowShown : Event() {
343367
override val name: String = "barcode_scanner_setup_flow_shown"
344368
}

0 commit comments

Comments
 (0)