Skip to content

Commit 078154a

Browse files
authored
Merge pull request #10058 from wordpress-mobile/feature/add_tracks_to_insights_management
Add tracks to the insights management
2 parents 2ffee86 + a5f2005 commit 078154a

File tree

5 files changed

+52
-2
lines changed

5 files changed

+52
-2
lines changed

WordPress/src/main/java/org/wordpress/android/ui/stats/refresh/lists/sections/insights/management/InsightsManagementViewModel.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import kotlinx.coroutines.CoroutineDispatcher
77
import kotlinx.coroutines.GlobalScope
88
import kotlinx.coroutines.launch
99
import org.wordpress.android.R
10+
import org.wordpress.android.analytics.AnalyticsTracker.Stat
1011
import org.wordpress.android.fluxc.store.StatsStore
1112
import org.wordpress.android.fluxc.store.StatsStore.InsightType
1213
import org.wordpress.android.fluxc.store.StatsStore.InsightType.ALL_TIME_STATS
@@ -26,6 +27,8 @@ import org.wordpress.android.ui.stats.refresh.lists.BaseListUseCase
2627
import org.wordpress.android.ui.stats.refresh.lists.sections.insights.management.InsightsManagementViewModel.InsightModel.Status.ADDED
2728
import org.wordpress.android.ui.stats.refresh.lists.sections.insights.management.InsightsManagementViewModel.InsightModel.Status.REMOVED
2829
import org.wordpress.android.ui.stats.refresh.utils.StatsSiteProvider
30+
import org.wordpress.android.ui.stats.refresh.utils.trackWithType
31+
import org.wordpress.android.util.analytics.AnalyticsTrackerWrapper
2932
import org.wordpress.android.viewmodel.ScopedViewModel
3033
import org.wordpress.android.viewmodel.SingleLiveEvent
3134
import javax.inject.Inject
@@ -35,7 +38,8 @@ class InsightsManagementViewModel @Inject constructor(
3538
@Named(UI_THREAD) mainDispatcher: CoroutineDispatcher,
3639
@Named(INSIGHTS_USE_CASE) val insightsUseCase: BaseListUseCase,
3740
private val siteProvider: StatsSiteProvider,
38-
private val statsStore: StatsStore
41+
private val statsStore: StatsStore,
42+
private val analyticsTrackerWrapper: AnalyticsTrackerWrapper
3943
) : ScopedViewModel(mainDispatcher) {
4044
private val _removedInsights = MutableLiveData<List<InsightModel>>()
4145
val removedInsights: LiveData<List<InsightModel>> = _removedInsights
@@ -76,6 +80,7 @@ class InsightsManagementViewModel @Inject constructor(
7680

7781
fun onSaveInsights() {
7882
// This has to be GlobalScope because otherwise the coroutine gets killed with the ViewModel
83+
analyticsTrackerWrapper.track(Stat.STATS_INSIGHTS_MANAGEMENT_SAVED)
7984
GlobalScope.launch {
8085
val addedTypes = insights.filter { it.type == ADDED }.map { it.insightType }
8186
statsStore.updateTypes(siteProvider.siteModel, addedTypes)
@@ -86,14 +91,17 @@ class InsightsManagementViewModel @Inject constructor(
8691
}
8792

8893
fun onAddedInsightsReordered(addedInsights: List<InsightModel>) {
94+
analyticsTrackerWrapper.track(Stat.STATS_INSIGHTS_MANAGEMENT_TYPE_REORDERED)
8995
insights = addedInsights + insights.filter { it.type == REMOVED }
9096
_isMenuVisible.value = true
9197
}
9298

9399
fun onItemButtonClicked(insight: InsightModel) {
94100
if (insight.type == ADDED) {
101+
analyticsTrackerWrapper.trackWithType(Stat.STATS_INSIGHTS_MANAGEMENT_TYPE_REMOVED, insight.insightType)
95102
insight.type = REMOVED
96103
} else {
104+
analyticsTrackerWrapper.trackWithType(Stat.STATS_INSIGHTS_MANAGEMENT_TYPE_ADDED, insight.insightType)
97105
insight.type = ADDED
98106
}
99107
displayInsights()

WordPress/src/main/java/org/wordpress/android/ui/stats/refresh/utils/ItemPopupMenuHandler.kt

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import kotlinx.coroutines.GlobalScope
99
import kotlinx.coroutines.launch
1010
import kotlinx.coroutines.withContext
1111
import org.wordpress.android.R
12+
import org.wordpress.android.analytics.AnalyticsTracker.Stat
1213
import org.wordpress.android.fluxc.store.StatsStore
1314
import org.wordpress.android.fluxc.store.StatsStore.InsightType
1415
import org.wordpress.android.fluxc.store.StatsStore.StatsType
@@ -19,6 +20,7 @@ import org.wordpress.android.ui.stats.refresh.lists.sections.insights.InsightsMe
1920
import org.wordpress.android.ui.stats.refresh.lists.sections.insights.InsightsMenuAdapter.InsightsMenuItem.DOWN
2021
import org.wordpress.android.ui.stats.refresh.lists.sections.insights.InsightsMenuAdapter.InsightsMenuItem.REMOVE
2122
import org.wordpress.android.ui.stats.refresh.lists.sections.insights.InsightsMenuAdapter.InsightsMenuItem.UP
23+
import org.wordpress.android.util.analytics.AnalyticsTrackerWrapper
2224
import org.wordpress.android.viewmodel.Event
2325
import javax.inject.Inject
2426
import javax.inject.Named
@@ -30,7 +32,8 @@ class ItemPopupMenuHandler
3032
@Named(BG_THREAD) private val bgDispatcher: CoroutineDispatcher,
3133
@Named(UI_THREAD) private val mainDispatcher: CoroutineDispatcher,
3234
private val statsStore: StatsStore,
33-
private val statsSiteProvider: StatsSiteProvider
35+
private val statsSiteProvider: StatsSiteProvider,
36+
private val analyticsTrackerWrapper: AnalyticsTrackerWrapper
3437
) {
3538
private val mutableTypeMoved = MutableLiveData<Event<StatsType>>()
3639
val typeMoved: LiveData<Event<StatsType>> = mutableTypeMoved
@@ -54,19 +57,31 @@ class ItemPopupMenuHandler
5457
popup.setOnItemClickListener { _, _, _, id ->
5558
when (InsightsMenuItem.values()[id.toInt()]) {
5659
UP -> {
60+
analyticsTrackerWrapper.trackWithType(
61+
Stat.STATS_INSIGHTS_TYPE_MOVED_UP,
62+
statsType
63+
)
5764
GlobalScope.launch(bgDispatcher) {
5865
statsStore.moveTypeUp(statsSiteProvider.siteModel, type)
5966
mutableTypeMoved.postValue(Event(type))
6067
}
6168
}
6269
DOWN -> {
6370
GlobalScope.launch(bgDispatcher) {
71+
analyticsTrackerWrapper.trackWithType(
72+
Stat.STATS_INSIGHTS_TYPE_MOVED_DOWN,
73+
statsType
74+
)
6475
statsStore.moveTypeDown(statsSiteProvider.siteModel, type)
6576
mutableTypeMoved.postValue(Event(type))
6677
}
6778
}
6879
REMOVE -> {
6980
GlobalScope.launch(bgDispatcher) {
81+
analyticsTrackerWrapper.trackWithType(
82+
Stat.STATS_INSIGHTS_TYPE_REMOVED,
83+
statsType
84+
)
7085
statsStore.removeType(statsSiteProvider.siteModel, type)
7186
mutableTypeMoved.postValue(Event(type))
7287
}

WordPress/src/main/java/org/wordpress/android/ui/stats/refresh/utils/StatsAnalyticsUtils.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@ import org.wordpress.android.fluxc.network.utils.StatsGranularity.DAYS
66
import org.wordpress.android.fluxc.network.utils.StatsGranularity.MONTHS
77
import org.wordpress.android.fluxc.network.utils.StatsGranularity.WEEKS
88
import org.wordpress.android.fluxc.network.utils.StatsGranularity.YEARS
9+
import org.wordpress.android.fluxc.store.StatsStore.InsightType
910
import org.wordpress.android.util.analytics.AnalyticsTrackerWrapper
1011

1112
private const val GRANULARITY = "granularity"
1213
private const val DAYS_PROPERTY = "days"
1314
private const val WEEKS_PROPERTY = "weeks"
1415
private const val MONTHS_PROPERTY = "months"
1516
private const val YEARS_PROPERTY = "years"
17+
private const val TYPE = "type"
1618

1719
fun AnalyticsTrackerWrapper.trackGranular(stat: Stat, granularity: StatsGranularity) {
1820
val property = when (granularity) {
@@ -23,3 +25,7 @@ fun AnalyticsTrackerWrapper.trackGranular(stat: Stat, granularity: StatsGranular
2325
}
2426
this.track(stat, mapOf(GRANULARITY to property))
2527
}
28+
29+
fun AnalyticsTrackerWrapper.trackWithType(stat: Stat, insightType: InsightType) {
30+
this.track(stat, mapOf(TYPE to insightType.name))
31+
}

libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTracker.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,13 @@ public enum Stat {
8282
STATS_INSIGHTS_MANAGEMENT_HINT_DISMISSED,
8383
STATS_INSIGHTS_MANAGEMENT_HINT_CLICKED,
8484
STATS_INSIGHTS_MANAGEMENT_ACCESSED,
85+
STATS_INSIGHTS_TYPE_MOVED_UP,
86+
STATS_INSIGHTS_TYPE_MOVED_DOWN,
87+
STATS_INSIGHTS_TYPE_REMOVED,
88+
STATS_INSIGHTS_MANAGEMENT_SAVED,
89+
STATS_INSIGHTS_MANAGEMENT_TYPE_ADDED,
90+
STATS_INSIGHTS_MANAGEMENT_TYPE_REMOVED,
91+
STATS_INSIGHTS_MANAGEMENT_TYPE_REORDERED,
8592
STATS_PERIOD_DAYS_ACCESSED,
8693
STATS_PERIOD_WEEKS_ACCESSED,
8794
STATS_PERIOD_MONTHS_ACCESSED,

libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerNosara.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -985,6 +985,20 @@ public static String getEventNameForStat(AnalyticsTracker.Stat stat) {
985985
return "stats_insights_management_hint_clicked";
986986
case STATS_INSIGHTS_MANAGEMENT_ACCESSED:
987987
return "stats_insights_management_accessed";
988+
case STATS_INSIGHTS_TYPE_MOVED_UP:
989+
return "stats_insights_type_moved_up";
990+
case STATS_INSIGHTS_TYPE_MOVED_DOWN:
991+
return "stats_insights_type_moved_down";
992+
case STATS_INSIGHTS_TYPE_REMOVED:
993+
return "stats_insights_type_removed";
994+
case STATS_INSIGHTS_MANAGEMENT_SAVED:
995+
return "stats_insights_management_saved";
996+
case STATS_INSIGHTS_MANAGEMENT_TYPE_ADDED:
997+
return "stats_insights_management_type_added";
998+
case STATS_INSIGHTS_MANAGEMENT_TYPE_REMOVED:
999+
return "stats_insights_management_type_removed";
1000+
case STATS_INSIGHTS_MANAGEMENT_TYPE_REORDERED:
1001+
return "stats_insights_management_type_reordered";
9881002
case STATS_PERIOD_DAYS_ACCESSED:
9891003
return "stats_period_accessed";
9901004
case STATS_PERIOD_WEEKS_ACCESSED:

0 commit comments

Comments
 (0)