Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.BackToCartTapped
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.CheckoutTapped
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.ClearCartTapped
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.EmptyCartSetUpScannerTapped
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.InteractionWithCustomerStarted
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.ItemRemovedFromCart
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEventConstant
Expand Down Expand Up @@ -135,6 +136,9 @@ class WooPosCartViewModel @Inject constructor(
}

WooPosCartUIEvent.BarcodeSetupClicked -> {
viewModelScope.launch {
analyticsTracker.track(EmptyCartSetUpScannerTapped)
}
sendEventToParent(ChildToParentEvent.SetupBarcodeScannerClicked)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.statusBarsPadding
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
Expand All @@ -34,7 +35,14 @@ fun WooPosSettingsScreen(onNavigationEvent: (WooPosNavigationEvent) -> Unit) {
val containerViewModel: WooPosSettingsViewModel = hiltViewModel()
val state by containerViewModel.state.collectAsState()

BackHandler { onNavigationEvent(WooPosNavigationEvent.GoBack) }
LaunchedEffect(Unit) {
containerViewModel.onSettingsOpened()
}

BackHandler {
containerViewModel.onSettingsClosed()
onNavigationEvent(WooPosNavigationEvent.GoBack)
}

Row(
modifier = Modifier.fillMaxSize()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,32 @@
package com.woocommerce.android.ui.woopos.settings

import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.woocommerce.android.ui.woopos.home.WooPosHomeState
import com.woocommerce.android.ui.woopos.settings.categories.WooPosSettingsCategory
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.HardwareTapped
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.HelpTapped
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.SettingsClosed
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.SettingsOpened
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsEvent.Event.StoreDetailsTapped
import com.woocommerce.android.ui.woopos.util.analytics.WooPosAnalyticsTracker
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import javax.inject.Inject

@HiltViewModel
class WooPosSettingsViewModel @Inject constructor() : ViewModel() {
class WooPosSettingsViewModel @Inject constructor(
private val analyticsTracker: WooPosAnalyticsTracker
) : ViewModel() {
private val _state = MutableStateFlow(WooPosSettingsState())
val state: StateFlow<WooPosSettingsState> = _state.asStateFlow()

fun onCategorySelected(category: WooPosSettingsCategory) {
trackCategorySelection(category)
_state.update { currentState ->
currentState.copy(
selectedCategory = category,
Expand All @@ -24,6 +35,17 @@ class WooPosSettingsViewModel @Inject constructor() : ViewModel() {
}
}

private fun trackCategorySelection(category: WooPosSettingsCategory) {
val event = when (category) {
WooPosSettingsCategory.STORE -> StoreDetailsTapped
WooPosSettingsCategory.HARDWARE -> HardwareTapped
WooPosSettingsCategory.HELP -> HelpTapped
}
viewModelScope.launch {
analyticsTracker.track(event)
}
}

fun navigateToDetail(destination: WooPosSettingsDetailDestination) {
_state.update { currentState ->
currentState.copy(currentDestination = destination)
Expand Down Expand Up @@ -58,4 +80,16 @@ class WooPosSettingsViewModel @Inject constructor() : ViewModel() {
currentState.copy(dialogState = WooPosHomeState.DialogState.Hidden)
}
}

fun onSettingsOpened() {
viewModelScope.launch {
analyticsTracker.track(SettingsOpened)
}
}

fun onSettingsClosed() {
viewModelScope.launch {
analyticsTracker.track(SettingsClosed)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -339,6 +339,30 @@ sealed class WooPosAnalyticsEvent : IAnalyticsEvent {
override val name: String = "simple_products_explanation_dialog_shown"
}

data object SettingsOpened : Event() {
override val name: String = "settings_opened"
}

data object SettingsClosed : Event() {
override val name: String = "settings_closed"
}

data object StoreDetailsTapped : Event() {
override val name: String = "store_details_tapped"
}

data object HardwareTapped : Event() {
override val name: String = "hardware_tapped"
}

data object HelpTapped : Event() {
override val name: String = "help_tapped"
}

data object EmptyCartSetUpScannerTapped : Event() {
override val name: String = "empty_cart_set_up_scanner_tapped"
}

data object BarcodeScannerSetupFlowShown : Event() {
override val name: String = "barcode_scanner_setup_flow_shown"
}
Expand Down