Skip to content

Commit

Permalink
Merge pull request #13452 from woocommerce/issue/13443-fix-dashboard-…
Browse files Browse the repository at this point in the history
…interacted-tracking

Issue/13443 fix dashboard interacted tracking
  • Loading branch information
JorgeMucientes authored Feb 7, 2025
2 parents c4dd29b + 5095e05 commit eef0488
Show file tree
Hide file tree
Showing 6 changed files with 44 additions and 47 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,6 @@ enum class AnalyticsEvent(override val siteless: Boolean = false) : IAnalyticsEv
DASHBOARD_STATS_CUSTOM_RANGE_ADD_BUTTON_TAPPED,
DASHBOARD_STATS_CUSTOM_RANGE_CONFIRMED,
DASHBOARD_STATS_CUSTOM_RANGE_EDIT_BUTTON_TAPPED,
DASHBOARD_STATS_CUSTOM_RANGE_INTERACTED,
DYNAMIC_DASHBOARD_EDIT_LAYOUT_BUTTON_TAPPED,
DYNAMIC_DASHBOARD_HIDE_CARD_TAPPED,
DYNAMIC_DASHBOARD_EDITOR_SAVE_TAPPED,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,4 @@ class DashboardStatsUsageTracksEventEmitter @Inject constructor(
firstInteractionTime = null
lastInteractionTime = null
}

fun interactedWithCustomRange() {
analyticsTrackerWrapper.track(AnalyticsEvent.DASHBOARD_STATS_CUSTOM_RANGE_INTERACTED)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ fun DashboardStatsCard(
dateUtils = viewModel.dateUtils,
currencyFormatter = viewModel.currencyFormatter,
usageTracksEventEmitter = viewModel.usageTracksEventEmitter,
onAddCustomRangeClick = viewModel::onAddCustomRangeClicked,
onAddCustomRangeClick = viewModel::onEditCustomRangeTapped,
onTabSelected = viewModel::onRangeChanged,
onChartDateSelected = viewModel::onChartDateSelected
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,14 @@ import com.github.mikephil.charting.listener.OnChartValueSelectedListener
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.woocommerce.android.R
import com.woocommerce.android.analytics.AnalyticsEvent
import com.woocommerce.android.analytics.AnalyticsEvent.DYNAMIC_DASHBOARD_CARD_INTERACTED
import com.woocommerce.android.analytics.AnalyticsTracker
import com.woocommerce.android.analytics.AnalyticsTracker.Companion.KEY_DATE
import com.woocommerce.android.analytics.AnalyticsTracker.Companion.KEY_GRANULARITY
import com.woocommerce.android.analytics.AnalyticsTracker.Companion.KEY_RANGE
import com.woocommerce.android.databinding.MyStoreStatsBinding
import com.woocommerce.android.extensions.convertedFrom
import com.woocommerce.android.model.DashboardWidget
import com.woocommerce.android.ui.analytics.ranges.StatsTimeRangeSelection
import com.woocommerce.android.ui.analytics.ranges.StatsTimeRangeSelection.SelectionType
import com.woocommerce.android.ui.analytics.ranges.myStoreTrackingGranularityString
Expand Down Expand Up @@ -180,10 +182,10 @@ class DashboardStatsView @JvmOverloads constructor(
.debounce(EVENT_EMITTER_INTERACTION_DEBOUNCE)
.collect {
usageTracksEventEmitter.interacted()

if (statsTimeRangeSelection.selectionType == SelectionType.CUSTOM) {
usageTracksEventEmitter.interactedWithCustomRange()
}
AnalyticsTracker.track(
DYNAMIC_DASHBOARD_CARD_INTERACTED,
mapOf(AnalyticsTracker.KEY_TYPE to DashboardWidget.Type.STATS.trackingIdentifier)
)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,22 +124,36 @@ class DashboardStatsViewModel @AssistedInject constructor(
}

fun onRangeChanged(selectionType: SelectionType) {
parentViewModel.trackCardInteracted(DashboardWidget.Type.STATS.trackingIdentifier)
usageTracksEventEmitter.interacted()
if (selectionType != SelectionType.CUSTOM) {
parentViewModel.trackCardInteracted(DashboardWidget.Type.STATS.trackingIdentifier)
appPrefsWrapper.setActiveStatsTab(selectionType.name)
} else {
if (dateRangeState.value?.customRange == null) {
onAddCustomRangeClicked()
} else {
appPrefsWrapper.setActiveStatsTab(SelectionType.CUSTOM.name)
analyticsTrackerWrapper.track(
AnalyticsEvent.DASHBOARD_STATS_CUSTOM_RANGE_ADD_BUTTON_TAPPED
)
when {
dateRangeState.value?.customRange == null -> onEditCustomRangeTapped()
else -> {
parentViewModel.trackCardInteracted(DashboardWidget.Type.STATS.trackingIdentifier)
appPrefsWrapper.setActiveStatsTab(SelectionType.CUSTOM.name)
}
}
}
}

fun onEditCustomRangeTapped() {
parentViewModel.trackCardInteracted(DashboardWidget.Type.STATS.trackingIdentifier)
if (dateRangeState.value?.customRange == null) {
analyticsTrackerWrapper.track(AnalyticsEvent.DASHBOARD_STATS_CUSTOM_RANGE_ADD_BUTTON_TAPPED)
} else {
analyticsTrackerWrapper.track(AnalyticsEvent.DASHBOARD_STATS_CUSTOM_RANGE_EDIT_BUTTON_TAPPED)
}
triggerEvent(
OpenDatePicker(
fromDate = dateRangeState.value?.customRange?.start ?: Date(),
toDate = dateRangeState.value?.customRange?.end ?: Date()
)
)
}

fun onCustomRangeSelected(range: StatsTimeRange) {
analyticsTrackerWrapper.track(
AnalyticsEvent.DASHBOARD_STATS_CUSTOM_RANGE_CONFIRMED,
Expand All @@ -151,28 +165,11 @@ class DashboardStatsViewModel @AssistedInject constructor(
viewModelScope.launch {
customDateRangeDataStore.updateDateRange(range)
if (dateRangeState.value?.rangeSelection?.selectionType != SelectionType.CUSTOM) {
onRangeChanged(SelectionType.CUSTOM)
appPrefsWrapper.setActiveStatsTab(SelectionType.CUSTOM.name)
}
}
}

fun onAddCustomRangeClicked() {
parentViewModel.trackCardInteracted(DashboardWidget.Type.STATS.trackingIdentifier)
triggerEvent(
OpenDatePicker(
fromDate = dateRangeState.value?.customRange?.start ?: Date(),
toDate = dateRangeState.value?.customRange?.end ?: Date()
)
)

val event = if (dateRangeState.value?.customRange == null) {
AnalyticsEvent.DASHBOARD_STATS_CUSTOM_RANGE_ADD_BUTTON_TAPPED
} else {
AnalyticsEvent.DASHBOARD_STATS_CUSTOM_RANGE_EDIT_BUTTON_TAPPED
}
analyticsTrackerWrapper.track(event)
}

fun onViewAnalyticsClicked() {
parentViewModel.trackCardInteracted(DashboardWidget.Type.STATS.trackingIdentifier)
AnalyticsTracker.track(AnalyticsEvent.DASHBOARD_SEE_MORE_ANALYTICS_TAPPED)
Expand Down Expand Up @@ -210,6 +207,7 @@ class DashboardStatsViewModel @AssistedInject constructor(
properties = mapOf(AnalyticsTracker.KEY_ERROR to it.toString())
)
}

is LoadStatsResult.VisitorStatsLoading -> {
_visitorStatsState.value = VisitorStatsViewState.NotLoaded
}
Expand Down Expand Up @@ -239,6 +237,7 @@ class DashboardStatsViewModel @AssistedInject constructor(
properties = mapOf(AnalyticsTracker.KEY_ERROR to it.toString())
)
}

is LoadStatsResult.VisitorStatUnavailable -> {
_visitorStatsState.value = VisitorStatsViewState.Unavailable(
showJetpackIcon = !appPrefsWrapper.isSiteWPComSuspended
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,28 +141,28 @@ class DashboardTopPerformersViewModel @AssistedInject constructor(
}

fun onRangeChanged(selectionType: SelectionType) {
parentViewModel.trackCardInteracted(DashboardWidget.Type.POPULAR_PRODUCTS.trackingIdentifier)
usageTracksEventEmitter.interacted()
if (selectionType != SelectionType.CUSTOM) {
parentViewModel.trackCardInteracted(DashboardWidget.Type.POPULAR_PRODUCTS.trackingIdentifier)
appPrefsWrapper.setActiveTopPerformersTab(selectionType.name)
} else {
if (selectedDateRange.value?.customRange == null) {
onEditCustomRangeTapped()
} else {
appPrefsWrapper.setActiveTopPerformersTab(SelectionType.CUSTOM.name)
analyticsTrackerWrapper.track(AnalyticsEvent.DASHBOARD_STATS_CUSTOM_RANGE_ADD_BUTTON_TAPPED)
when {
selectedDateRange.value?.customRange == null -> onEditCustomRangeTapped()
else -> {
parentViewModel.trackCardInteracted(DashboardWidget.Type.POPULAR_PRODUCTS.trackingIdentifier)
appPrefsWrapper.setActiveTopPerformersTab(SelectionType.CUSTOM.name)
}
}
}
}

fun onEditCustomRangeTapped() {
parentViewModel.trackCardInteracted(DashboardWidget.Type.POPULAR_PRODUCTS.trackingIdentifier)
val event = if (selectedDateRange.value?.customRange == null) {
AnalyticsEvent.DASHBOARD_STATS_CUSTOM_RANGE_ADD_BUTTON_TAPPED
if (selectedDateRange.value?.customRange == null) {
analyticsTrackerWrapper.track(AnalyticsEvent.DASHBOARD_STATS_CUSTOM_RANGE_ADD_BUTTON_TAPPED)
} else {
AnalyticsEvent.DASHBOARD_STATS_CUSTOM_RANGE_EDIT_BUTTON_TAPPED
analyticsTrackerWrapper.track(AnalyticsEvent.DASHBOARD_STATS_CUSTOM_RANGE_EDIT_BUTTON_TAPPED)
}
analyticsTrackerWrapper.track(event)

triggerEvent(
OpenDatePicker(
Expand Down Expand Up @@ -287,12 +287,13 @@ class DashboardTopPerformersViewModel @AssistedInject constructor(
viewModelScope.launch {
customDateRangeDataStore.updateDateRange(statsTimeRange)
if (selectedDateRange.value?.rangeSelection?.selectionType != SelectionType.CUSTOM) {
onRangeChanged(SelectionType.CUSTOM)
appPrefsWrapper.setActiveTopPerformersTab(SelectionType.CUSTOM.name)
}
}
}

private fun onViewAllAnalyticsTapped() {
parentViewModel.trackCardInteracted(DashboardWidget.Type.POPULAR_PRODUCTS.trackingIdentifier)
AnalyticsTracker.track(AnalyticsEvent.DASHBOARD_SEE_MORE_ANALYTICS_TAPPED)
selectedDateRange.value?.let {
triggerEvent(OpenAnalytics(it.rangeSelection))
Expand Down

0 comments on commit eef0488

Please sign in to comment.