Skip to content

Commit 643656f

Browse files
authored
Merge pull request #20194 from wordpress-mobile/update-stats-analytics
Update stats analytics
2 parents 2739b53 + 02869c6 commit 643656f

File tree

24 files changed

+216
-89
lines changed

24 files changed

+216
-89
lines changed

WordPress/src/main/java/org/wordpress/android/ui/ActivityLauncher.java

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@
116116
import org.wordpress.android.ui.stats.StatsTimeframe;
117117
import org.wordpress.android.ui.stats.StatsViewType;
118118
import org.wordpress.android.ui.stats.refresh.StatsActivity;
119+
import org.wordpress.android.ui.stats.refresh.StatsActivity.StatsLaunchedFrom;
119120
import org.wordpress.android.ui.stats.refresh.StatsViewAllActivity;
120121
import org.wordpress.android.ui.stats.refresh.lists.StatsListViewModel.StatsSection;
121122
import org.wordpress.android.ui.stats.refresh.lists.detail.StatsDetailActivity;
@@ -501,21 +502,23 @@ public static void openEditorForReblog(
501502
addNewPostForResult(editorIntent, activity, site, false, reblogSource, -1, null);
502503
}
503504

504-
public static void viewStatsInNewStack(Context context, SiteModel site) {
505-
viewStatsInNewStack(context, site, null);
505+
public static void viewStatsInNewStack(Context context, SiteModel site, @NonNull StatsLaunchedFrom launchedFrom) {
506+
viewStatsInNewStack(context, site, null, launchedFrom);
506507
}
507508

508-
public static void viewStatsInNewStack(Context context, SiteModel site, @Nullable StatsTimeframe statsTimeframe) {
509-
viewStatsInNewStack(context, site, statsTimeframe, null);
509+
public static void viewStatsInNewStack(Context context, SiteModel site, @Nullable StatsTimeframe statsTimeframe,
510+
@NonNull StatsLaunchedFrom launchedFrom) {
511+
viewStatsInNewStack(context, site, statsTimeframe, null, launchedFrom);
510512
}
511513

512514
public static void viewStatsInNewStack(Context context, SiteModel site, @Nullable StatsTimeframe statsTimeframe,
513-
@Nullable String period) {
515+
@Nullable String period, @NonNull StatsLaunchedFrom launchedFrom) {
514516
if (site == null) {
515517
handleMissingSite(context);
516518
return;
517519
}
518-
runIntentOverMainActivityInNewStack(context, StatsActivity.buildIntent(context, site, statsTimeframe, period));
520+
runIntentOverMainActivityInNewStack(context,
521+
StatsActivity.buildIntent(context, site, statsTimeframe, period, launchedFrom));
519522
}
520523

521524
private static void handleMissingSite(Context context) {
@@ -537,9 +540,11 @@ public static PendingIntent buildStatsPendingIntentOverMainActivityInNewStack(Co
537540
@Nullable StatsTimeframe timeframe,
538541
@Nullable String period,
539542
@Nullable NotificationType type,
543+
@NonNull
544+
StatsLaunchedFrom launchedFrom,
540545
int requestCode, int flags) {
541546
return buildPendingIntentOverMainActivityInNewStack(context,
542-
StatsActivity.buildIntent(context, site, timeframe, period, type), requestCode, flags);
547+
StatsActivity.buildIntent(context, site, timeframe, period, launchedFrom, type), requestCode, flags);
543548
}
544549

545550
private static PendingIntent buildPendingIntentOverMainActivityInNewStack(Context context, Intent intent,
@@ -586,33 +591,34 @@ public static void viewSavedPostsListInReader(Context context) {
586591
context.startActivity(intent);
587592
}
588593

589-
public static void viewBlogStats(Context context, SiteModel site) {
594+
public static void viewBlogStats(Context context, SiteModel site, @NonNull StatsLaunchedFrom from) {
590595
if (site == null) {
591596
AppLog.e(T.STATS, "SiteModel is null when opening the stats.");
592597
AnalyticsTracker.track(
593598
STATS_ACCESS_ERROR,
594599
ActivityLauncher.class.getName(),
595600
"NullPointerException",
596601
"Failed to open Stats because of the null SiteModel"
597-
);
602+
);
598603
ToastUtils.showToast(context, R.string.stats_cannot_be_started, ToastUtils.Duration.SHORT);
599604
} else {
600-
StatsActivity.start(context, site);
605+
StatsActivity.start(context, site, from);
601606
}
602607
}
603608

604-
public static void viewBlogStatsForTimeframe(Context context, SiteModel site, StatsTimeframe statsTimeframe) {
609+
public static void viewBlogStatsForTimeframe(Context context, SiteModel site, StatsTimeframe statsTimeframe,
610+
@NonNull StatsLaunchedFrom from) {
605611
if (site == null) {
606612
AppLog.e(T.STATS, "SiteModel is null when opening the stats.");
607613
AnalyticsTracker.track(
608614
STATS_ACCESS_ERROR,
609615
ActivityLauncher.class.getName(),
610616
"NullPointerException",
611617
"Failed to open Stats because of the null SiteModel"
612-
);
618+
);
613619
ToastUtils.showToast(context, R.string.stats_cannot_be_started, ToastUtils.Duration.SHORT);
614620
} else {
615-
StatsActivity.start(context, site, statsTimeframe);
621+
StatsActivity.start(context, site, statsTimeframe, from);
616622
}
617623
}
618624

@@ -636,19 +642,20 @@ public static void viewInsightsManagement(Context context, int localSiteId) {
636642
context.startActivity(intent);
637643
}
638644

639-
public static void viewBlogStatsAfterJetpackSetup(Context context, SiteModel site) {
645+
public static void viewBlogStatsAfterJetpackSetup(Context context, SiteModel site,
646+
@NonNull StatsLaunchedFrom launchedFrom) {
640647
if (site == null) {
641648
AppLog.e(T.STATS, "SiteModel is null when opening the stats.");
642649
AnalyticsTracker.track(
643650
STATS_ACCESS_ERROR,
644651
ActivityLauncher.class.getName(),
645652
"NullPointerException",
646653
"Failed to open Stats because of the null SiteModel"
647-
);
654+
);
648655
ToastUtils.showToast(context, R.string.stats_cannot_be_started, ToastUtils.Duration.SHORT);
649656
return;
650657
}
651-
StatsActivity.start(context, site);
658+
StatsActivity.start(context, site, launchedFrom);
652659
}
653660

654661
public static void viewConnectJetpackForStats(Context context, SiteModel site) {

WordPress/src/main/java/org/wordpress/android/ui/JetpackConnectionResultActivity.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.wordpress.android.fluxc.store.SiteStore;
2121
import org.wordpress.android.login.LoginMode;
2222
import org.wordpress.android.ui.accounts.LoginActivity;
23+
import org.wordpress.android.ui.stats.refresh.StatsActivity.StatsLaunchedFrom;
2324
import org.wordpress.android.util.AppLog;
2425
import org.wordpress.android.util.SiteUtils;
2526
import org.wordpress.android.util.ToastUtils;
@@ -140,7 +141,7 @@ private void finishAndGoBackToSource() {
140141
if (mSource == JetpackConnectionSource.STATS) {
141142
SiteModel site = (SiteModel) getIntent().getSerializableExtra(SITE);
142143
mDispatcher.dispatch(SiteActionBuilder.newFetchSitesAction(SiteUtils.getFetchSitesPayload()));
143-
ActivityLauncher.viewBlogStatsAfterJetpackSetup(this, site);
144+
ActivityLauncher.viewBlogStatsAfterJetpackSetup(this, site, StatsLaunchedFrom.JETPACK_CONNECTION);
144145
}
145146
finish();
146147
}

WordPress/src/main/java/org/wordpress/android/ui/ShortcutsNavigator.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.wordpress.android.analytics.AnalyticsTracker;
66
import org.wordpress.android.fluxc.model.SiteModel;
77
import org.wordpress.android.ui.jetpackoverlay.JetpackFeatureRemovalPhaseHelper;
8+
import org.wordpress.android.ui.stats.refresh.StatsActivity.StatsLaunchedFrom;
89
import org.wordpress.android.util.AppLog;
910

1011
import javax.inject.Inject;
@@ -35,7 +36,7 @@ public void showTargetScreen(String action, Activity activity, SiteModel current
3536
if (mJetpackFeatureRemovalPhaseHelper.shouldShowStaticPage()) {
3637
ActivityLauncher.showJetpackStaticPoster(activity);
3738
} else {
38-
ActivityLauncher.viewBlogStats(activity, currentSite);
39+
ActivityLauncher.viewBlogStats(activity, currentSite, StatsLaunchedFrom.SHORTCUT);
3940
}
4041
}
4142
break;

WordPress/src/main/java/org/wordpress/android/ui/deeplinks/DeepLinkNavigator.kt

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import org.wordpress.android.ui.deeplinks.DeepLinkNavigator.NavigateAction.ViewP
2929
import org.wordpress.android.ui.sitecreation.misc.SiteCreationSource.DEEP_LINK
3030
import org.wordpress.android.ui.sitemonitor.SiteMonitorType
3131
import org.wordpress.android.ui.stats.StatsTimeframe
32+
import org.wordpress.android.ui.stats.refresh.StatsActivity
3233
import org.wordpress.android.util.UriWrapper
3334
import javax.inject.Inject
3435

@@ -61,12 +62,20 @@ class DeepLinkNavigator
6162
activity,
6263
navigateAction.statsTimeframe
6364
)
64-
is OpenStatsForSite -> ActivityLauncher.viewStatsInNewStack(activity, navigateAction.site)
65+
66+
is OpenStatsForSite -> ActivityLauncher.viewStatsInNewStack(
67+
activity,
68+
navigateAction.site,
69+
StatsActivity.StatsLaunchedFrom.LINK
70+
)
71+
6572
is OpenStatsForSiteAndTimeframe -> ActivityLauncher.viewStatsInNewStack(
6673
activity,
6774
navigateAction.site,
68-
navigateAction.statsTimeframe
75+
navigateAction.statsTimeframe,
76+
StatsActivity.StatsLaunchedFrom.LINK
6977
)
78+
7079
OpenReader -> ActivityLauncher.viewReaderInNewStack(activity)
7180
is OpenInReader -> ActivityLauncher.viewPostDeeplinkInNewStack(activity, navigateAction.uri.uri)
7281
is ViewPostInReader -> ActivityLauncher.viewReaderPostDetailInNewStack(

WordPress/src/main/java/org/wordpress/android/ui/main/WPMainActivity.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@
134134
import org.wordpress.android.ui.review.ReviewViewModel;
135135
import org.wordpress.android.ui.sitecreation.misc.SiteCreationSource;
136136
import org.wordpress.android.ui.stats.StatsTimeframe;
137+
import org.wordpress.android.ui.stats.refresh.StatsActivity.StatsLaunchedFrom;
137138
import org.wordpress.android.ui.stories.intro.StoriesIntroDialogFragment;
138139
import org.wordpress.android.ui.uploads.UploadActionUseCase;
139140
import org.wordpress.android.ui.uploads.UploadUtils;
@@ -944,9 +945,10 @@ private void handleOpenPageIntent(@NonNull Intent intent) {
944945
}
945946
if (intent.hasExtra(ARG_STATS_TIMEFRAME)) {
946947
ActivityLauncher.viewBlogStatsForTimeframe(this, getSelectedSite(),
947-
(StatsTimeframe) intent.getSerializableExtra(ARG_STATS_TIMEFRAME));
948+
(StatsTimeframe) intent.getSerializableExtra(ARG_STATS_TIMEFRAME),
949+
StatsLaunchedFrom.LINK);
948950
} else {
949-
ActivityLauncher.viewBlogStats(this, getSelectedSite());
951+
ActivityLauncher.viewBlogStats(this, getSelectedSite(), StatsLaunchedFrom.LINK);
950952
}
951953
break;
952954
case ARG_PAGES:

WordPress/src/main/java/org/wordpress/android/ui/mysite/MySiteFragment.kt

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ import org.wordpress.android.ui.quickstart.QuickStartTracker
5959
import org.wordpress.android.ui.reader.ReaderActivityLauncher
6060
import org.wordpress.android.ui.reader.tracker.ReaderTracker
6161
import org.wordpress.android.ui.stats.StatsTimeframe
62+
import org.wordpress.android.ui.stats.refresh.StatsActivity
6263
import org.wordpress.android.ui.uploads.UploadService
6364
import org.wordpress.android.ui.uploads.UploadUtilsWrapper
6465
import org.wordpress.android.ui.utils.TitleSubtitleSnackbarSpannable
@@ -607,7 +608,12 @@ class MySiteFragment : Fragment(R.layout.my_site_fragment),
607608
action.quickStartEvent
608609
)
609610
is SiteNavigationAction.OpenUnifiedComments -> ActivityLauncher.viewUnifiedComments(activity, action.site)
610-
is SiteNavigationAction.OpenStats -> ActivityLauncher.viewBlogStats(activity, action.site)
611+
is SiteNavigationAction.OpenStats -> ActivityLauncher.viewBlogStats(
612+
activity,
613+
action.site,
614+
StatsActivity.StatsLaunchedFrom.QUICK_ACTIONS
615+
)
616+
611617
is SiteNavigationAction.ConnectJetpackForStats ->
612618
ActivityLauncher.viewConnectJetpackForStats(activity, action.site)
613619
is SiteNavigationAction.StartWPComLoginForJetpackStats ->
@@ -667,8 +673,14 @@ class MySiteFragment : Fragment(R.layout.my_site_fragment),
667673
ActivityLauncher.viewCurrentBlogPostsOfType(requireActivity(), action.site, PostListType.DRAFTS)
668674
is SiteNavigationAction.EditScheduledPost ->
669675
ActivityLauncher.viewCurrentBlogPostsOfType(requireActivity(), action.site, PostListType.SCHEDULED)
670-
is SiteNavigationAction.OpenStatsInsights ->
671-
ActivityLauncher.viewBlogStatsForTimeframe(requireActivity(), action.site, StatsTimeframe.INSIGHTS)
676+
677+
is SiteNavigationAction.OpenStatsInsights -> ActivityLauncher.viewBlogStatsForTimeframe(
678+
requireActivity(),
679+
action.site,
680+
StatsTimeframe.INSIGHTS,
681+
StatsActivity.StatsLaunchedFrom.TODAY_STATS_CARD
682+
)
683+
672684
is SiteNavigationAction.OpenExternalUrl ->
673685
ActivityLauncher.openUrlExternal(requireActivity(), action.url)
674686
is SiteNavigationAction.OpenUrlInWebView ->

WordPress/src/main/java/org/wordpress/android/ui/mysite/menu/MenuActivity.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ import org.wordpress.android.ui.mysite.items.listitem.ListItemAction
6464
import org.wordpress.android.ui.pages.SnackbarMessageHolder
6565
import org.wordpress.android.ui.prefs.SiteSettingsFragment
6666
import org.wordpress.android.ui.quickstart.QuickStartMySitePrompts
67+
import org.wordpress.android.ui.stats.refresh.StatsActivity
6768
import org.wordpress.android.ui.utils.ListItemInteraction
6869
import org.wordpress.android.ui.utils.UiString
6970
import org.wordpress.android.util.LocaleManager
@@ -143,7 +144,12 @@ class MenuActivity : AppCompatActivity() {
143144
is SiteNavigationAction.OpenMedia -> ActivityLauncher.viewCurrentBlogMedia(this, action.site)
144145
is SiteNavigationAction.OpenMeScreen -> ActivityLauncher.viewMeActivityForResult(this)
145146
is SiteNavigationAction.OpenUnifiedComments -> ActivityLauncher.viewUnifiedComments(this, action.site)
146-
is SiteNavigationAction.OpenStats -> ActivityLauncher.viewBlogStats(this, action.site)
147+
is SiteNavigationAction.OpenStats -> ActivityLauncher.viewBlogStats(
148+
this,
149+
action.site,
150+
StatsActivity.StatsLaunchedFrom.ROW
151+
)
152+
147153
is SiteNavigationAction.OpenDomains -> ActivityLauncher.viewDomainsDashboardActivity(
148154
this,
149155
action.site

WordPress/src/main/java/org/wordpress/android/ui/notifications/NotificationsDetailActivity.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import org.wordpress.android.ui.reader.comments.ThreadedCommentsActionSource;
5555
import org.wordpress.android.ui.reader.tracker.ReaderTracker;
5656
import org.wordpress.android.ui.stats.StatsViewType;
57+
import org.wordpress.android.ui.stats.refresh.StatsActivity.StatsLaunchedFrom;
5758
import org.wordpress.android.util.AppLog;
5859
import org.wordpress.android.util.StringUtils;
5960
import org.wordpress.android.util.ToastUtils;
@@ -504,7 +505,7 @@ private void showStatsActivityForSite(@NonNull SiteModel site, FormattableRangeT
504505
ActivityLauncher.viewAllTabbedInsightsStats(this, StatsViewType.FOLLOWERS, 0,
505506
site.getId());
506507
} else {
507-
ActivityLauncher.viewBlogStats(this, site);
508+
ActivityLauncher.viewBlogStats(this, site, StatsLaunchedFrom.NOTIFICATION);
508509
}
509510
}
510511

WordPress/src/main/java/org/wordpress/android/ui/notifications/utils/FormattableContentClickHandler.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import org.wordpress.android.ui.reader.comments.ThreadedCommentsActionSource.ACT
1616
import org.wordpress.android.ui.reader.tracker.ReaderTracker
1717
import org.wordpress.android.ui.reader.utils.ReaderUtils
1818
import org.wordpress.android.ui.stats.StatsViewType.FOLLOWERS
19+
import org.wordpress.android.ui.stats.refresh.StatsActivity
1920
import org.wordpress.android.util.AppLog
2021
import org.wordpress.android.util.AppLog.T.API
2122
import org.wordpress.android.util.ToastUtils
@@ -117,7 +118,7 @@ class FormattableContentClickHandler @Inject constructor(
117118
if (rangeType == FormattableRangeType.FOLLOW) {
118119
ActivityLauncher.viewAllTabbedInsightsStats(activity, FOLLOWERS, 0, site.id)
119120
} else {
120-
ActivityLauncher.viewBlogStats(activity, site)
121+
ActivityLauncher.viewBlogStats(activity, site, StatsActivity.StatsLaunchedFrom.ACTIVITY_LOG)
121122
}
122123
}
123124

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

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,9 @@ class StatsActivity : LocaleAwareActivity() {
6969
context: Context,
7070
site: SiteModel,
7171
statsTimeframe: StatsTimeframe? = null,
72-
period: String? = null
73-
) = context.startActivity(buildIntent(context, site, statsTimeframe, period))
72+
period: String? = null,
73+
launchedFrom: StatsLaunchedFrom
74+
) = context.startActivity(buildIntent(context, site, statsTimeframe, period, launchedFrom))
7475

7576
@JvmStatic
7677
@JvmOverloads
@@ -79,17 +80,26 @@ class StatsActivity : LocaleAwareActivity() {
7980
site: SiteModel,
8081
statsTimeframe: StatsTimeframe? = null,
8182
period: String? = null,
83+
launchedFrom: StatsLaunchedFrom,
8284
notificationType: NotificationType? = null
8385
) = Intent(context, StatsActivity::class.java).apply {
8486
putExtra(WordPress.LOCAL_SITE_ID, site.id)
8587
statsTimeframe?.let { putExtra(ARG_DESIRED_TIMEFRAME, it) }
8688
period?.let { putExtra(INITIAL_SELECTED_PERIOD_KEY, it) }
89+
putExtra(ARG_LAUNCHED_FROM, launchedFrom)
8790
notificationType?.let { putExtra(ARG_NOTIFICATION_TYPE, it) }
8891
}
8992
}
9093

91-
enum class StatsLaunchedFrom {
92-
STATS_WIDGET,
93-
NOTIFICATIONS
94+
enum class StatsLaunchedFrom(val value: String) {
95+
QUICK_ACTIONS("quick_actions"),
96+
TODAY_STATS_CARD("today_stats_card"),
97+
ROW("row"),
98+
WIDGET("widget"),
99+
NOTIFICATION("notification"),
100+
LINK("link"),
101+
SHORTCUT("shortcut"),
102+
ACTIVITY_LOG("activity_log"),
103+
JETPACK_CONNECTION("jetpack_connection")
94104
}
95105
}

0 commit comments

Comments
 (0)