diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/analytics/AnalyticsEvent.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/analytics/AnalyticsEvent.kt index 4c6c312f842..2a4361ecd88 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/analytics/AnalyticsEvent.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/analytics/AnalyticsEvent.kt @@ -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, diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dashboard/DashboardStatsUsageTracksEventEmitter.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dashboard/DashboardStatsUsageTracksEventEmitter.kt index 62e015777d5..261bbeec36e 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dashboard/DashboardStatsUsageTracksEventEmitter.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dashboard/DashboardStatsUsageTracksEventEmitter.kt @@ -100,8 +100,4 @@ class DashboardStatsUsageTracksEventEmitter @Inject constructor( firstInteractionTime = null lastInteractionTime = null } - - fun interactedWithCustomRange() { - analyticsTrackerWrapper.track(AnalyticsEvent.DASHBOARD_STATS_CUSTOM_RANGE_INTERACTED) - } } diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dashboard/stats/DashboardStatsCard.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dashboard/stats/DashboardStatsCard.kt index da92128cf56..0b1ccf01d47 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dashboard/stats/DashboardStatsCard.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dashboard/stats/DashboardStatsCard.kt @@ -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 ) diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dashboard/stats/DashboardStatsView.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dashboard/stats/DashboardStatsView.kt index 47648e5d058..9b48aba0971 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dashboard/stats/DashboardStatsView.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dashboard/stats/DashboardStatsView.kt @@ -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 @@ -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) + ) } } } diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dashboard/stats/DashboardStatsViewModel.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dashboard/stats/DashboardStatsViewModel.kt index e1cbe2a4f25..db87c15eb10 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dashboard/stats/DashboardStatsViewModel.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dashboard/stats/DashboardStatsViewModel.kt @@ -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, @@ -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) @@ -210,6 +207,7 @@ class DashboardStatsViewModel @AssistedInject constructor( properties = mapOf(AnalyticsTracker.KEY_ERROR to it.toString()) ) } + is LoadStatsResult.VisitorStatsLoading -> { _visitorStatsState.value = VisitorStatsViewState.NotLoaded } @@ -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 diff --git a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dashboard/topperformers/DashboardTopPerformersViewModel.kt b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dashboard/topperformers/DashboardTopPerformersViewModel.kt index f279156a4fb..4f61f968d92 100644 --- a/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dashboard/topperformers/DashboardTopPerformersViewModel.kt +++ b/WooCommerce/src/main/kotlin/com/woocommerce/android/ui/dashboard/topperformers/DashboardTopPerformersViewModel.kt @@ -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( @@ -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))