diff --git a/WordPress/src/main/java/org/wordpress/android/datasets/ReaderDatabase.java b/WordPress/src/main/java/org/wordpress/android/datasets/ReaderDatabase.java index ef9504c37c7b..9ae4f5521b05 100644 --- a/WordPress/src/main/java/org/wordpress/android/datasets/ReaderDatabase.java +++ b/WordPress/src/main/java/org/wordpress/android/datasets/ReaderDatabase.java @@ -19,7 +19,7 @@ */ public class ReaderDatabase extends SQLiteOpenHelper { protected static final String DB_NAME = "wpreader.db"; - private static final int DB_VERSION = 124; + private static final int DB_VERSION = 125; /* * version history @@ -76,6 +76,7 @@ public class ReaderDatabase extends SQLiteOpenHelper { * 122 - changed tbl_posts primary key to pseudo_id * 123 - changed tbl_posts.published to tbl_posts.date * 124 - returned tbl_posts.published + * 125 - added tbl_posts.railcar_json */ /* diff --git a/WordPress/src/main/java/org/wordpress/android/datasets/ReaderPostTable.java b/WordPress/src/main/java/org/wordpress/android/datasets/ReaderPostTable.java index 1cd234f53ea6..af9b068913ed 100644 --- a/WordPress/src/main/java/org/wordpress/android/datasets/ReaderPostTable.java +++ b/WordPress/src/main/java/org/wordpress/android/datasets/ReaderPostTable.java @@ -63,7 +63,8 @@ public class ReaderPostTable { + "attachments_json," // 34 + "discover_json," // 35 + "xpost_post_id," // 36 - + "xpost_blog_id"; // 37 + + "xpost_blog_id," // 37 + + "railcar_json"; // 38 // used when querying multiple rows and skipping tbl_posts.text private static final String COLUMN_NAMES_NO_TEXT = @@ -102,7 +103,8 @@ public class ReaderPostTable { + "tbl_posts.attachments_json," // 33 + "tbl_posts.discover_json," // 34 + "tbl_posts.xpost_post_id," // 35 - + "tbl_posts.xpost_blog_id"; // 36 + + "tbl_posts.xpost_blog_id," // 36 + + "tbl_posts.railcar_json"; // 37 protected static void createTables(SQLiteDatabase db) { db.execSQL("CREATE TABLE tbl_posts (" @@ -143,6 +145,7 @@ protected static void createTables(SQLiteDatabase db) { + " discover_json TEXT," + " xpost_post_id INTEGER DEFAULT 0," + " xpost_blog_id INTEGER DEFAULT 0," + + " railcar_json TEXT," + " PRIMARY KEY (pseudo_id)" + ")"); @@ -642,7 +645,7 @@ public static void addOrUpdatePosts(final ReaderTag tag, ReaderPostList posts) { SQLiteStatement stmtPosts = db.compileStatement( "INSERT OR REPLACE INTO tbl_posts (" + COLUMN_NAMES - + ") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18,?19,?20,?21,?22,?23,?24,?25,?26,?27,?28,?29,?30,?31,?32,?33,?34,?35,?36,?37)"); + + ") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18,?19,?20,?21,?22,?23,?24,?25,?26,?27,?28,?29,?30,?31,?32,?33,?34,?35,?36,?37,?38)"); SQLiteStatement stmtTags = db.compileStatement( "INSERT OR REPLACE INTO tbl_post_tags (post_id, blog_id, feed_id, pseudo_id, tag_name, tag_type) VALUES (?1,?2,?3,?4,?5,?6)"); @@ -687,6 +690,7 @@ public static void addOrUpdatePosts(final ReaderTag tag, ReaderPostList posts) { stmtPosts.bindString(35, post.getDiscoverJson()); stmtPosts.bindLong (36, post.xpostPostId); stmtPosts.bindLong (37, post.xpostBlogId); + stmtPosts.bindString(38, post.getRailcarJson()); stmtPosts.execute(); } @@ -907,6 +911,8 @@ private static ReaderPost getPostFromCursor(Cursor c) { post.xpostPostId = c.getLong(c.getColumnIndex("xpost_post_id")); post.xpostBlogId = c.getLong(c.getColumnIndex("xpost_blog_id")); + post.setRailcarJson(c.getString(c.getColumnIndex("railcar_json"))); + return post; } diff --git a/WordPress/src/main/java/org/wordpress/android/models/ReaderPost.java b/WordPress/src/main/java/org/wordpress/android/models/ReaderPost.java index a0b95e7e6574..8ce09db51e85 100644 --- a/WordPress/src/main/java/org/wordpress/android/models/ReaderPost.java +++ b/WordPress/src/main/java/org/wordpress/android/models/ReaderPost.java @@ -10,7 +10,6 @@ import org.wordpress.android.ui.reader.utils.ImageSizeMap; import org.wordpress.android.ui.reader.utils.ReaderImageScanner; import org.wordpress.android.ui.reader.utils.ReaderUtils; -import org.wordpress.android.util.AppLog; import org.wordpress.android.util.DateTimeUtils; import org.wordpress.android.util.GravatarUtils; import org.wordpress.android.util.HtmlUtils; @@ -75,6 +74,8 @@ public class ReaderPost { public long xpostPostId; public long xpostBlogId; + private String railcarJson; + public static ReaderPost fromJson(JSONObject json) { if (json == null) { throw new IllegalArgumentException("null json post"); @@ -209,6 +210,12 @@ public static ReaderPost fromJson(JSONObject json) { .getLargestImage(ReaderConstants.MIN_FEATURED_IMAGE_WIDTH); } + // "railcar" data - currently used in search streams, used by TrainTracks + JSONObject jsonRailcar = json.optJSONObject("railcar"); + if (jsonRailcar != null) { + post.setRailcarJson(jsonRailcar.toString()); + } + return post; } @@ -604,6 +611,17 @@ public boolean canLikePost() { return (isWP() || isJetpack) && (!isDiscoverPost()); } + + public String getRailcarJson() { + return StringUtils.notNullStr(railcarJson); + } + public void setRailcarJson(String jsonRailcar) { + this.railcarJson = StringUtils.notNullStr(jsonRailcar); + } + public boolean hasRailcar() { + return !TextUtils.isEmpty(railcarJson); + } + /**** * the following are transient variables - not stored in the db or returned in the json - whose * sole purpose is to cache commonly-used values for the post that speeds up using them inside diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostDetailFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostDetailFragment.java index 2ecfec4bd997..f88c9baaf915 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostDetailFragment.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostDetailFragment.java @@ -353,9 +353,9 @@ private void togglePostLike() { refreshIconCounts(); if (isAskingToLike) { - AnalyticsUtils.trackWithBlogDetails(AnalyticsTracker.Stat.READER_ARTICLE_LIKED, mBlogId); + AnalyticsUtils.trackWithReaderPostDetails(AnalyticsTracker.Stat.READER_ARTICLE_LIKED, mPost); } else { - AnalyticsUtils.trackWithBlogDetails(AnalyticsTracker.Stat.READER_ARTICLE_UNLIKED, mBlogId); + AnalyticsUtils.trackWithReaderPostDetails(AnalyticsTracker.Stat.READER_ARTICLE_UNLIKED, mPost); } } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostListFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostListFragment.java index f245cd9ec506..69409385eaf2 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostListFragment.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostListFragment.java @@ -1444,7 +1444,7 @@ public void onPostSelected(ReaderPost post) { post.postId); break; case SEARCH_RESULTS: - AnalyticsTracker.track(AnalyticsTracker.Stat.READER_SEARCH_RESULT_TAPPED); + AnalyticsUtils.trackWithReaderPostDetails(AnalyticsTracker.Stat.READER_SEARCH_RESULT_TAPPED, post); ReaderActivityLauncher.showReaderPostDetail(getActivity(), post.blogId, post.postId); break; } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/adapters/ReaderPostAdapter.java b/WordPress/src/main/java/org/wordpress/android/ui/reader/adapters/ReaderPostAdapter.java index f2d10a421443..090f79fe36d0 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/reader/adapters/ReaderPostAdapter.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/adapters/ReaderPostAdapter.java @@ -46,6 +46,8 @@ import org.wordpress.android.util.UrlUtils; import org.wordpress.android.widgets.WPNetworkImageView; +import java.util.HashSet; + public class ReaderPostAdapter extends RecyclerView.Adapter { private ReaderTag mCurrentTag; private long mCurrentBlogId; @@ -64,6 +66,7 @@ public class ReaderPostAdapter extends RecyclerView.Adapter mRenderedIds = new HashSet<>(); private ReaderInterfaces.OnPostSelectedListener mPostSelectedListener; private ReaderInterfaces.OnTagSelectedListener mOnTagSelectedListener; @@ -456,6 +459,13 @@ public void onClick(View v) { }); checkLoadMore(position); + + // if we haven't already rendered this post and it has a "railcar" attached to it, add it + // to the rendered list and record the TrainTracks render event + if (post.hasRailcar() && !mRenderedIds.contains(post.getPseudoId())) { + mRenderedIds.add(post.getPseudoId()); + AnalyticsUtils.trackRailcarRender(post.getRailcarJson()); + } } /* @@ -604,6 +614,7 @@ private ReaderTypes.ReaderPostListType getPostListType() { public void setCurrentTag(ReaderTag tag) { if (!ReaderTag.isSameTag(tag, mCurrentTag)) { mCurrentTag = tag; + mRenderedIds.clear(); reload(); } } @@ -617,6 +628,7 @@ public void setCurrentBlogAndFeed(long blogId, long feedId) { if (blogId != mCurrentBlogId || feedId != mCurrentFeedId) { mCurrentBlogId = blogId; mCurrentFeedId = feedId; + mRenderedIds.clear(); reload(); } } @@ -758,7 +770,7 @@ public void onClick(View v) { /* * triggered when user taps the like button (textView) */ - private void toggleLike(Context context, ReaderPostViewHolder holder,ReaderPost post) { + private void toggleLike(Context context, ReaderPostViewHolder holder, ReaderPost post) { if (post == null || !NetworkUtils.checkConnection(context)) { return; } @@ -773,12 +785,12 @@ private void toggleLike(Context context, ReaderPostViewHolder holder,ReaderPost } if (isAskingToLike) { - AnalyticsUtils.trackWithBlogDetails(AnalyticsTracker.Stat.READER_ARTICLE_LIKED, mCurrentBlogId != 0 ? mCurrentBlogId : null); + AnalyticsUtils.trackWithReaderPostDetails(AnalyticsTracker.Stat.READER_ARTICLE_LIKED, post); // Consider a like to be enough to push a page view - solves a long-standing question // from folks who ask 'why do I have more likes than page views?'. ReaderPostActions.bumpPageViewForPost(post); } else { - AnalyticsUtils.trackWithBlogDetails(AnalyticsTracker.Stat.READER_ARTICLE_LIKED, mCurrentBlogId != 0 ? mCurrentBlogId : null); + AnalyticsUtils.trackWithReaderPostDetails(AnalyticsTracker.Stat.READER_ARTICLE_LIKED, post); } // update post in array and on screen diff --git a/WordPress/src/main/java/org/wordpress/android/util/AnalyticsUtils.java b/WordPress/src/main/java/org/wordpress/android/util/AnalyticsUtils.java index 9348cdc47828..c8dd0867a59b 100644 --- a/WordPress/src/main/java/org/wordpress/android/util/AnalyticsUtils.java +++ b/WordPress/src/main/java/org/wordpress/android/util/AnalyticsUtils.java @@ -2,19 +2,32 @@ import android.content.SharedPreferences; import android.preference.PreferenceManager; +import android.support.annotation.NonNull; import android.text.Html; +import android.text.TextUtils; +import org.json.JSONException; +import org.json.JSONObject; import org.wordpress.android.WordPress; +import org.wordpress.android.analytics.AnalyticsMetadata; import org.wordpress.android.analytics.AnalyticsTracker; import org.wordpress.android.analytics.AnalyticsTrackerMixpanel; -import org.wordpress.android.analytics.AnalyticsMetadata; +import org.wordpress.android.analytics.AnalyticsTrackerNosara; import org.wordpress.android.models.AccountHelper; import org.wordpress.android.models.Blog; import org.wordpress.android.models.ReaderPost; import java.util.HashMap; +import java.util.Iterator; import java.util.Map; +import static org.wordpress.android.analytics.AnalyticsTracker.Stat.READER_ARTICLE_COMMENTED_ON; +import static org.wordpress.android.analytics.AnalyticsTracker.Stat.READER_ARTICLE_LIKED; +import static org.wordpress.android.analytics.AnalyticsTracker.Stat.READER_ARTICLE_OPENED; +import static org.wordpress.android.analytics.AnalyticsTracker.Stat.READER_SEARCH_RESULT_TAPPED; +import static org.wordpress.android.analytics.AnalyticsTracker.Stat.TRAIN_TRACKS_INTERACT; +import static org.wordpress.android.analytics.AnalyticsTracker.Stat.TRAIN_TRACKS_RENDER; + public class AnalyticsUtils { private static String BLOG_ID_KEY = "blog_id"; private static String POST_ID_KEY = "post_id"; @@ -186,6 +199,72 @@ public static void trackWithReaderPostDetails(AnalyticsTracker.Stat stat, Reader properties.put(FEED_ID_KEY, post.feedId); properties.put(FEED_ITEM_ID_KEY, post.feedItemId); properties.put(IS_JETPACK_KEY, post.isJetpack); + AnalyticsTracker.track(stat, properties); + + // record a railcar interact event if the post has a railcar and this can be tracked + // as an interaction + if (canTrackRailcarInteraction(stat) && post.hasRailcar()) { + trackRailcarInteraction(stat, post.getRailcarJson()); + } + } + + /** + * Track when a railcar item has been rendered + * + * @param post The JSON string of the railcar + * + */ + public static void trackRailcarRender(String railcarJson) { + if (TextUtils.isEmpty(railcarJson)) return; + + AnalyticsTracker.track(TRAIN_TRACKS_RENDER, railcarJsonToProperties(railcarJson)); + } + + /** + * Track when a railcar item has been interacted with + * + * @param stat The event that caused the interaction + * @param post The JSON string of the railcar + * + */ + private static void trackRailcarInteraction(AnalyticsTracker.Stat stat, String railcarJson) { + if (TextUtils.isEmpty(railcarJson)) return; + + Map properties = railcarJsonToProperties(railcarJson); + properties.put("action", AnalyticsTrackerNosara.getEventNameForStat(stat)); + AnalyticsTracker.track(TRAIN_TRACKS_INTERACT, properties); + } + + /** + * @param stat The event that would cause the interaction + * @return True if the passed stat event can be recorded as a railcar interaction + */ + private static boolean canTrackRailcarInteraction(AnalyticsTracker.Stat stat) { + return stat == READER_ARTICLE_LIKED + || stat == READER_ARTICLE_OPENED + || stat == READER_SEARCH_RESULT_TAPPED + || stat == READER_ARTICLE_COMMENTED_ON; } + + /* + * Converts the JSON string of a railcar to a properties list using the existing json key names + */ + private static Map railcarJsonToProperties(@NonNull String railcarJson) { + Map properties = new HashMap<>(); + try { + JSONObject jsonRailcar = new JSONObject(railcarJson); + Iterator iter = jsonRailcar.keys(); + while (iter.hasNext()) { + String key = iter.next(); + Object value = jsonRailcar.get(key); + properties.put(key, value); + } + } catch (JSONException e) { + AppLog.e(AppLog.T.READER, e); + } + + return properties; + } + } diff --git a/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTracker.java b/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTracker.java index 1ea37ac438d6..7608e4bd089f 100644 --- a/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTracker.java +++ b/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTracker.java @@ -182,7 +182,9 @@ public enum Stat { SITE_SETTINGS_DELETE_SITE_REQUESTED, SITE_SETTINGS_DELETE_SITE_RESPONSE_OK, SITE_SETTINGS_DELETE_SITE_RESPONSE_ERROR, - ABTEST_START + ABTEST_START, + TRAIN_TRACKS_RENDER, + TRAIN_TRACKS_INTERACT } private static final List TRACKERS = new ArrayList<>(); diff --git a/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerMixpanel.java b/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerMixpanel.java index 0dd6dad250d9..2897925aff4c 100644 --- a/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerMixpanel.java +++ b/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerMixpanel.java @@ -1058,6 +1058,10 @@ private AnalyticsTrackerMixpanelInstructionsForStat instructionsForStat( case ABTEST_START: instructions = AnalyticsTrackerMixpanelInstructionsForStat.mixpanelInstructionsForEventName("AB Test - Started"); break; + case TRAIN_TRACKS_RENDER: case TRAIN_TRACKS_INTERACT: + // Do nothing. These events are just for Tracks. + instructions = null; + break; default: instructions = null; break; diff --git a/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerNosara.java b/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerNosara.java index aab9f6f1d33d..1d829e35542e 100644 --- a/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerNosara.java +++ b/libs/analytics/WordPressAnalytics/src/main/java/org/wordpress/android/analytics/AnalyticsTrackerNosara.java @@ -41,543 +41,95 @@ public void track(AnalyticsTracker.Stat stat, Map properties) { return; } - Map predefinedEventProperties = new HashMap(); - String eventName; + String eventName = getEventNameForStat(stat); + if (eventName == null) { + AppLog.w(AppLog.T.STATS, "There is NO match for the event " + stat.name() + "stat"); + return; + } + Map predefinedEventProperties = new HashMap(); switch (stat) { - case APPLICATION_OPENED: - eventName = "application_opened"; - break; - case APPLICATION_CLOSED: - eventName = "application_closed"; - break; - case APPLICATION_INSTALLED: - eventName = "application_installed"; - break; - case APPLICATION_UPGRADED: - eventName = "application_upgraded"; - break; - case READER_ACCESSED: - eventName = "reader_accessed"; - break; - case READER_ARTICLE_COMMENTED_ON: - eventName = "reader_article_commented_on"; - break; - case READER_ARTICLE_LIKED: - eventName = "reader_article_liked"; - break; - case READER_ARTICLE_OPENED: - eventName = "reader_article_opened"; - break; - case READER_ARTICLE_UNLIKED: - eventName = "reader_article_unliked"; - break; - case READER_BLOG_BLOCKED: - eventName = "reader_blog_blocked"; - break; - case READER_BLOG_FOLLOWED: - eventName = "reader_site_followed"; - break; - case READER_BLOG_PREVIEWED: - eventName = "reader_blog_previewed"; - break; - case READER_BLOG_UNFOLLOWED: - eventName = "reader_site_unfollowed"; - break; - case READER_DISCOVER_VIEWED: - eventName = "reader_discover_viewed"; - break; - case READER_INFINITE_SCROLL: - eventName = "reader_infinite_scroll_performed"; - break; - case READER_LIST_FOLLOWED: - eventName = "reader_list_followed"; - break; - case READER_LIST_LOADED: - eventName = "reader_list_loaded"; - break; - case READER_LIST_PREVIEWED: - eventName = "reader_list_previewed"; - break; - case READER_LIST_UNFOLLOWED: - eventName = "reader_list_unfollowed"; - break; - case READER_TAG_FOLLOWED: - eventName = "reader_reader_tag_followed"; - break; - case READER_TAG_LOADED: - eventName = "reader_tag_loaded"; - break; - case READER_TAG_PREVIEWED: - eventName = "reader_tag_previewed"; - break; - case READER_SEARCH_LOADED: - eventName = "reader_search_loaded"; - break; - case READER_SEARCH_PERFORMED: - eventName = "reader_search_performed"; - break; - case READER_SEARCH_RESULT_TAPPED: - eventName = "reader_searchcard_clicked"; - break; - case READER_TAG_UNFOLLOWED: - eventName = "reader_reader_tag_unfollowed"; - break; - case EDITOR_CREATED_POST: - eventName = "editor_post_created"; - break; - case EDITOR_SAVED_DRAFT: - eventName = "editor_draft_saved"; - break; - case EDITOR_DISCARDED_CHANGES: - eventName = "editor_discarded_changes"; - break; - case EDITOR_EDITED_IMAGE: - eventName = "editor_image_edited"; - break; - case EDITOR_ENABLED_NEW_VERSION: - eventName = "editor_enabled_new_version"; - break; - case EDITOR_TOGGLED_OFF: - eventName = "editor_toggled_off"; - break; - case EDITOR_TOGGLED_ON: - eventName = "editor_toggled_on"; - break; - case EDITOR_UPLOAD_MEDIA_FAILED: - eventName = "editor_upload_media_failed"; - break; - case EDITOR_UPLOAD_MEDIA_RETRIED: - eventName = "editor_upload_media_retried"; - break; - case EDITOR_CLOSED: - eventName = "editor_closed"; - break; case EDITOR_ADDED_PHOTO_VIA_LOCAL_LIBRARY: - eventName = "editor_photo_added"; predefinedEventProperties.put("via", "local_library"); break; case EDITOR_ADDED_PHOTO_VIA_WP_MEDIA_LIBRARY: - eventName = "editor_photo_added"; predefinedEventProperties.put("via", "media_library"); break; case EDITOR_ADDED_VIDEO_VIA_LOCAL_LIBRARY: - eventName = "editor_video_added"; predefinedEventProperties.put("via", "local_library"); break; case EDITOR_ADDED_VIDEO_VIA_WP_MEDIA_LIBRARY: - eventName = "editor_video_added"; predefinedEventProperties.put("via", "media_library"); break; - case EDITOR_PUBLISHED_POST: - eventName = "editor_post_published"; - break; - case EDITOR_UPDATED_POST: - eventName = "editor_post_updated"; - break; - case EDITOR_SCHEDULED_POST: - eventName = "editor_post_scheduled"; - break; case EDITOR_TAPPED_BLOCKQUOTE: - eventName = "editor_button_tapped"; predefinedEventProperties.put("button", "blockquote"); break; case EDITOR_TAPPED_BOLD: - eventName = "editor_button_tapped"; predefinedEventProperties.put("button", "bold"); break; case EDITOR_TAPPED_IMAGE: - eventName = "editor_button_tapped"; predefinedEventProperties.put("button", "image"); break; case EDITOR_TAPPED_ITALIC: - eventName = "editor_button_tapped"; predefinedEventProperties.put("button", "italic"); break; case EDITOR_TAPPED_LINK: - eventName = "editor_button_tapped"; predefinedEventProperties.put("button", "link"); break; case EDITOR_TAPPED_MORE: - eventName = "editor_button_tapped"; predefinedEventProperties.put("button", "more"); break; case EDITOR_TAPPED_STRIKETHROUGH: - eventName = "editor_button_tapped"; predefinedEventProperties.put("button", "strikethrough"); break; case EDITOR_TAPPED_UNDERLINE: - eventName = "editor_button_tapped"; predefinedEventProperties.put("button", "underline"); break; case EDITOR_TAPPED_HTML: - eventName = "editor_button_tapped"; predefinedEventProperties.put("button", "html"); break; case EDITOR_TAPPED_ORDERED_LIST: - eventName = "editor_button_tapped"; predefinedEventProperties.put("button", "ordered_list"); break; case EDITOR_TAPPED_UNLINK: - eventName = "editor_button_tapped"; predefinedEventProperties.put("button", "unlink"); break; case EDITOR_TAPPED_UNORDERED_LIST: - eventName = "editor_button_tapped"; predefinedEventProperties.put("button", "unordered_list"); break; - case NOTIFICATIONS_ACCESSED: - eventName = "notifications_accessed"; - break; - case NOTIFICATIONS_OPENED_NOTIFICATION_DETAILS: - eventName = "notifications_notification_details_opened"; - break; - case NOTIFICATION_APPROVED: - eventName = "notifications_approved"; - break; - case NOTIFICATION_UNAPPROVED: - eventName = "notifications_unapproved"; - break; - case NOTIFICATION_REPLIED_TO: - eventName = "notifications_replied_to"; - break; - case NOTIFICATION_TRASHED: - eventName = "notifications_trashed"; - break; - case NOTIFICATION_FLAGGED_AS_SPAM: - eventName = "notifications_flagged_as_spam"; - break; - case NOTIFICATION_LIKED: - eventName = "notifications_comment_liked"; - break; - case NOTIFICATION_UNLIKED: - eventName = "notifications_comment_unliked"; - break; case OPENED_POSTS: - eventName = "site_menu_opened"; predefinedEventProperties.put("menu_item", "posts"); break; case OPENED_PAGES: - eventName = "site_menu_opened"; predefinedEventProperties.put("menu_item", "pages"); break; case OPENED_COMMENTS: - eventName = "site_menu_opened"; predefinedEventProperties.put("menu_item", "comments"); break; case OPENED_VIEW_SITE: - eventName = "site_menu_opened"; predefinedEventProperties.put("menu_item", "view_site"); break; case OPENED_VIEW_ADMIN: - eventName = "site_menu_opened"; predefinedEventProperties.put("menu_item", "view_admin"); break; case OPENED_MEDIA_LIBRARY: - eventName = "site_menu_opened"; predefinedEventProperties.put("menu_item", "media_library"); break; case OPENED_BLOG_SETTINGS: - eventName = "site_menu_opened"; predefinedEventProperties.put("menu_item", "site_settings"); break; - case OPENED_ACCOUNT_SETTINGS: - eventName = "account_settings_opened"; - break; - case OPENED_APP_SETTINGS: - eventName = "app_settings_opened"; - break; - case OPENED_MY_PROFILE: - eventName = "my_profile_opened"; - break; - case OPENED_PEOPLE_MANAGEMENT: - eventName = "people_management_list_opened"; - break; - case OPENED_PERSON: - eventName = "people_management_details_opened"; - break; - case CREATED_ACCOUNT: - eventName = "account_created"; - break; - case CREATED_SITE: - eventName = "site_created"; - break; - case SHARED_ITEM: - eventName = "item_shared"; - break; - case ADDED_SELF_HOSTED_SITE: - eventName = "self_hosted_blog_added"; - break; - case SIGNED_IN: - eventName = "signed_in"; - break; - case SIGNED_INTO_JETPACK: - eventName = "signed_into_jetpack"; - break; - case ACCOUNT_LOGOUT: - eventName = "account_logout"; - break; - case PERFORMED_JETPACK_SIGN_IN_FROM_STATS_SCREEN: - eventName = "stats_screen_signed_into_jetpack"; - break; - case STATS_ACCESSED: - eventName = "stats_accessed"; - break; - case STATS_INSIGHTS_ACCESSED: - eventName = "stats_insights_accessed"; - break; case STATS_PERIOD_DAYS_ACCESSED: - eventName = "stats_period_accessed"; predefinedEventProperties.put("period", "days"); break; case STATS_PERIOD_WEEKS_ACCESSED: - eventName = "stats_period_accessed"; predefinedEventProperties.put("period", "weeks"); break; case STATS_PERIOD_MONTHS_ACCESSED: - eventName = "stats_period_accessed"; predefinedEventProperties.put("period", "months"); break; case STATS_PERIOD_YEARS_ACCESSED: - eventName = "stats_period_accessed"; predefinedEventProperties.put("period", "years"); break; - case STATS_VIEW_ALL_ACCESSED: - eventName = "stats_view_all_accessed"; - break; - case STATS_SINGLE_POST_ACCESSED: - eventName = "stats_single_post_accessed"; - break; - case STATS_TAPPED_BAR_CHART: - eventName = "stats_bar_chart_tapped"; - break; - case STATS_SCROLLED_TO_BOTTOM: - eventName = "stats_scrolled_to_bottom"; - break; - case STATS_SELECTED_INSTALL_JETPACK: - eventName = "stats_install_jetpack_selected"; - break; - case STATS_SELECTED_CONNECT_JETPACK: - eventName = "stats_connect_jetpack_selected"; - break; - case STATS_WIDGET_ADDED: - eventName = "stats_widget_added"; - break; - case STATS_WIDGET_REMOVED: - eventName = "stats_widget_removed"; - break; - case STATS_WIDGET_TAPPED: - eventName = "stats_widget_tapped"; - break; - case PUSH_NOTIFICATION_RECEIVED: - eventName = "push_notification_received"; - break; - case PUSH_NOTIFICATION_TAPPED: - eventName = "push_notification_alert_tapped"; - break; - case SUPPORT_OPENED_HELPSHIFT_SCREEN: - eventName = "support_helpshift_screen_opened"; - break; - case SUPPORT_SENT_REPLY_TO_SUPPORT_MESSAGE: - eventName = "support_reply_to_support_message_sent"; - break; - case LOGIN_MAGIC_LINK_EXITED: - eventName = "login_magic_link_exited"; - break; - case LOGIN_MAGIC_LINK_FAILED: - eventName = "login_magic_link_failed"; - break; - case LOGIN_MAGIC_LINK_OPENED: - eventName = "login_magic_link_opened"; - break; - case LOGIN_MAGIC_LINK_REQUESTED: - eventName = "login_magic_link_requested"; - break; - case LOGIN_MAGIC_LINK_SUCCEEDED: - eventName = "login_magic_link_succeeded"; - break; - case LOGIN_FAILED: - eventName = "login_failed_to_login"; - break; - case LOGIN_FAILED_TO_GUESS_XMLRPC: - eventName = "login_failed_to_guess_xmlrpc"; - break; - case LOGIN_INSERTED_INVALID_URL: - eventName = "login_inserted_invalid_url"; - break; - case LOGIN_AUTOFILL_CREDENTIALS_FILLED: - eventName = "login_autofill_credentials_filled"; - break; - case LOGIN_AUTOFILL_CREDENTIALS_UPDATED: - eventName = "login_autofill_credentials_updated"; - break; - case PERSON_REMOVED: - eventName = "people_management_person_removed"; - break; - case PERSON_UPDATED: - eventName = "people_management_person_updated"; - break; - case PUSH_AUTHENTICATION_APPROVED: - eventName = "push_authentication_approved"; - break; - case PUSH_AUTHENTICATION_EXPIRED: - eventName = "push_authentication_expired"; - break; - case PUSH_AUTHENTICATION_FAILED: - eventName = "push_authentication_failed"; - break; - case PUSH_AUTHENTICATION_IGNORED: - eventName = "push_authentication_ignored"; - break; - case NOTIFICATION_SETTINGS_LIST_OPENED: - eventName = "notification_settings_list_opened"; - break; - case NOTIFICATION_SETTINGS_STREAMS_OPENED: - eventName = "notification_settings_streams_opened"; - break; - case NOTIFICATION_SETTINGS_DETAILS_OPENED: - eventName = "notification_settings_details_opened"; - break; - case ME_ACCESSED: - eventName = "me_tab_accessed"; - break; - case ME_GRAVATAR_TAPPED: - eventName = "me_gravatar_tapped"; - break; - case ME_GRAVATAR_TOOLTIP_TAPPED: - eventName = "me_gravatar_tooltip_tapped"; - break; - case ME_GRAVATAR_PERMISSIONS_INTERRUPTED: - eventName = "me_gravatar_permissions_interrupted"; - break; - case ME_GRAVATAR_PERMISSIONS_DENIED: - eventName = "me_gravatar_permissions_denied"; - break; - case ME_GRAVATAR_PERMISSIONS_ACCEPTED: - eventName = "me_gravatar_permissions_accepted"; - break; - case ME_GRAVATAR_SHOT_NEW: - eventName = "me_gravatar_shot_new"; - break; - case ME_GRAVATAR_GALLERY_PICKED: - eventName = "me_gravatar_gallery_picked"; - break; - case ME_GRAVATAR_CROPPED: - eventName = "me_gravatar_cropped"; - break; - case ME_GRAVATAR_UPLOADED: - eventName = "me_gravatar_uploaded"; - break; - case ME_GRAVATAR_UPLOAD_UNSUCCESSFUL: - eventName = "me_gravatar_upload_unsuccessful"; - break; - case ME_GRAVATAR_UPLOAD_EXCEPTION: - eventName = "me_gravatar_upload_exception"; - break; - case MY_SITE_ACCESSED: - eventName = "my_site_tab_accessed"; - break; - case THEMES_ACCESSED_THEMES_BROWSER: - eventName = "themes_theme_browser_accessed"; - break; - case THEMES_ACCESSED_SEARCH: - eventName = "themes_search_accessed"; - break; - case THEMES_CHANGED_THEME: - eventName = "themes_theme_changed"; - break; - case THEMES_PREVIEWED_SITE: - eventName = "themes_theme_for_site_previewed"; - break; - case THEMES_DEMO_ACCESSED: - eventName = "themes_demo_accessed"; - break; - case THEMES_CUSTOMIZE_ACCESSED: - eventName = "themes_customize_accessed"; - break; - case THEMES_SUPPORT_ACCESSED: - eventName = "themes_support_accessed"; - break; - case THEMES_DETAILS_ACCESSED: - eventName = "themes_details_accessed"; - break; - case ACCOUNT_SETTINGS_LANGUAGE_CHANGED: - eventName = "account_settings_language_changed"; - break; - case SITE_SETTINGS_ACCESSED: - eventName = "site_settings_accessed"; - break; - case SITE_SETTINGS_ACCESSED_MORE_SETTINGS: - eventName = "site_settings_more_settings_accessed"; - break; - case SITE_SETTINGS_ADDED_LIST_ITEM: - eventName = "site_settings_added_list_item"; - break; - case SITE_SETTINGS_DELETED_LIST_ITEMS: - eventName = "site_settings_deleted_list_items"; - break; - case SITE_SETTINGS_HINT_TOAST_SHOWN: - eventName = "site_settings_hint_toast_shown"; - break; - case SITE_SETTINGS_LEARN_MORE_CLICKED: - eventName = "site_settings_learn_more_clicked"; - break; - case SITE_SETTINGS_LEARN_MORE_LOADED: - eventName = "site_settings_learn_more_loaded"; - break; - case SITE_SETTINGS_SAVED_REMOTELY: - eventName = "site_settings_saved_remotely"; - break; - case SITE_SETTINGS_START_OVER_ACCESSED: - eventName = "site_settings_start_over_accessed"; - break; - case SITE_SETTINGS_START_OVER_CONTACT_SUPPORT_CLICKED: - eventName = "site_settings_start_over_contact_support_clicked"; - break; - case SITE_SETTINGS_EXPORT_SITE_ACCESSED: - eventName = "site_settings_export_site_accessed"; - break; - case SITE_SETTINGS_EXPORT_SITE_REQUESTED: - eventName = "site_settings_export_site_requested"; - break; - case SITE_SETTINGS_EXPORT_SITE_RESPONSE_OK: - eventName = "site_settings_export_site_response_ok"; - break; - case SITE_SETTINGS_EXPORT_SITE_RESPONSE_ERROR: - eventName = "site_settings_export_site_response_error"; - break; - case SITE_SETTINGS_DELETE_SITE_ACCESSED: - eventName = "site_settings_delete_site_accessed"; - break; - case SITE_SETTINGS_DELETE_SITE_PURCHASES_REQUESTED: - eventName = "site_settings_delete_site_purchases_requested"; - break; - case SITE_SETTINGS_DELETE_SITE_PURCHASES_SHOWN: - eventName = "site_settings_delete_site_purchases_shown"; - break; - case SITE_SETTINGS_DELETE_SITE_PURCHASES_SHOW_CLICKED: - eventName = "site_settings_delete_site_purchases_show_clicked"; - break; - case SITE_SETTINGS_DELETE_SITE_REQUESTED: - eventName = "site_settings_delete_site_requested"; - break; - case SITE_SETTINGS_DELETE_SITE_RESPONSE_OK: - eventName = "site_settings_delete_site_response_ok"; - break; - case SITE_SETTINGS_DELETE_SITE_RESPONSE_ERROR: - eventName = "site_settings_delete_site_response_error"; - break; - case ABTEST_START: - eventName = "abtest_start"; - break; - default: - eventName = null; - break; - } - - if (eventName == null) { - AppLog.w(AppLog.T.STATS, "There is NO match for the event " + stat.name() + "stat"); - return; } final String user; @@ -689,4 +241,347 @@ public void clearAllData() { public void registerPushNotificationToken(String regId) { return; } + + public static String getEventNameForStat(AnalyticsTracker.Stat stat) { + switch (stat) { + case APPLICATION_OPENED: + return "application_opened"; + case APPLICATION_CLOSED: + return "application_closed"; + case APPLICATION_INSTALLED: + return "application_installed"; + case APPLICATION_UPGRADED: + return "application_upgraded"; + case READER_ACCESSED: + return "reader_accessed"; + case READER_ARTICLE_COMMENTED_ON: + return "reader_article_commented_on"; + case READER_ARTICLE_LIKED: + return "reader_article_liked"; + case READER_ARTICLE_OPENED: + return "reader_article_opened"; + case READER_ARTICLE_UNLIKED: + return "reader_article_unliked"; + case READER_BLOG_BLOCKED: + return "reader_blog_blocked"; + case READER_BLOG_FOLLOWED: + return "reader_site_followed"; + case READER_BLOG_PREVIEWED: + return "reader_blog_previewed"; + case READER_BLOG_UNFOLLOWED: + return "reader_site_unfollowed"; + case READER_DISCOVER_VIEWED: + return "reader_discover_viewed"; + case READER_INFINITE_SCROLL: + return "reader_infinite_scroll_performed"; + case READER_LIST_FOLLOWED: + return "reader_list_followed"; + case READER_LIST_LOADED: + return "reader_list_loaded"; + case READER_LIST_PREVIEWED: + return "reader_list_previewed"; + case READER_LIST_UNFOLLOWED: + return "reader_list_unfollowed"; + case READER_TAG_FOLLOWED: + return "reader_reader_tag_followed"; + case READER_TAG_LOADED: + return "reader_tag_loaded"; + case READER_TAG_PREVIEWED: + return "reader_tag_previewed"; + case READER_SEARCH_LOADED: + return "reader_search_loaded"; + case READER_SEARCH_PERFORMED: + return "reader_search_performed"; + case READER_SEARCH_RESULT_TAPPED: + return "reader_searchcard_clicked"; + case READER_TAG_UNFOLLOWED: + return "reader_reader_tag_unfollowed"; + case EDITOR_CREATED_POST: + return "editor_post_created"; + case EDITOR_SAVED_DRAFT: + return "editor_draft_saved"; + case EDITOR_DISCARDED_CHANGES: + return "editor_discarded_changes"; + case EDITOR_EDITED_IMAGE: + return "editor_image_edited"; + case EDITOR_ENABLED_NEW_VERSION: + return "editor_enabled_new_version"; + case EDITOR_TOGGLED_OFF: + return "editor_toggled_off"; + case EDITOR_TOGGLED_ON: + return "editor_toggled_on"; + case EDITOR_UPLOAD_MEDIA_FAILED: + return "editor_upload_media_failed"; + case EDITOR_UPLOAD_MEDIA_RETRIED: + return "editor_upload_media_retried"; + case EDITOR_CLOSED: + return "editor_closed"; + case EDITOR_ADDED_PHOTO_VIA_LOCAL_LIBRARY: + return "editor_photo_added"; + case EDITOR_ADDED_PHOTO_VIA_WP_MEDIA_LIBRARY: + return "editor_photo_added"; + case EDITOR_ADDED_VIDEO_VIA_LOCAL_LIBRARY: + return "editor_video_added"; + case EDITOR_ADDED_VIDEO_VIA_WP_MEDIA_LIBRARY: + return "editor_video_added"; + case EDITOR_PUBLISHED_POST: + return "editor_post_published"; + case EDITOR_UPDATED_POST: + return "editor_post_updated"; + case EDITOR_SCHEDULED_POST: + return "editor_post_scheduled"; + case EDITOR_TAPPED_BLOCKQUOTE: + return "editor_button_tapped"; + case EDITOR_TAPPED_BOLD: + return "editor_button_tapped"; + case EDITOR_TAPPED_IMAGE: + return "editor_button_tapped"; + case EDITOR_TAPPED_ITALIC: + return "editor_button_tapped"; + case EDITOR_TAPPED_LINK: + return "editor_button_tapped"; + case EDITOR_TAPPED_MORE: + return "editor_button_tapped"; + case EDITOR_TAPPED_STRIKETHROUGH: + return "editor_button_tapped"; + case EDITOR_TAPPED_UNDERLINE: + return "editor_button_tapped"; + case EDITOR_TAPPED_HTML: + return "editor_button_tapped"; + case EDITOR_TAPPED_ORDERED_LIST: + return "editor_button_tapped"; + case EDITOR_TAPPED_UNLINK: + return "editor_button_tapped"; + case EDITOR_TAPPED_UNORDERED_LIST: + return "editor_button_tapped"; + case NOTIFICATIONS_ACCESSED: + return "notifications_accessed"; + case NOTIFICATIONS_OPENED_NOTIFICATION_DETAILS: + return "notifications_notification_details_opened"; + case NOTIFICATION_APPROVED: + return "notifications_approved"; + case NOTIFICATION_UNAPPROVED: + return "notifications_unapproved"; + case NOTIFICATION_REPLIED_TO: + return "notifications_replied_to"; + case NOTIFICATION_TRASHED: + return "notifications_trashed"; + case NOTIFICATION_FLAGGED_AS_SPAM: + return "notifications_flagged_as_spam"; + case NOTIFICATION_LIKED: + return "notifications_comment_liked"; + case NOTIFICATION_UNLIKED: + return "notifications_comment_unliked"; + case OPENED_POSTS: + return "site_menu_opened"; + case OPENED_PAGES: + return "site_menu_opened"; + case OPENED_COMMENTS: + return "site_menu_opened"; + case OPENED_VIEW_SITE: + return "site_menu_opened"; + case OPENED_VIEW_ADMIN: + return "site_menu_opened"; + case OPENED_MEDIA_LIBRARY: + return "site_menu_opened"; + case OPENED_BLOG_SETTINGS: + return "site_menu_opened"; + case OPENED_ACCOUNT_SETTINGS: + return "account_settings_opened"; + case OPENED_APP_SETTINGS: + return "app_settings_opened"; + case OPENED_MY_PROFILE: + return "my_profile_opened"; + case OPENED_PEOPLE_MANAGEMENT: + return "people_management_list_opened"; + case OPENED_PERSON: + return "people_management_details_opened"; + case CREATED_ACCOUNT: + return "account_created"; + case CREATED_SITE: + return "site_created"; + case SHARED_ITEM: + return "item_shared"; + case ADDED_SELF_HOSTED_SITE: + return "self_hosted_blog_added"; + case SIGNED_IN: + return "signed_in"; + case SIGNED_INTO_JETPACK: + return "signed_into_jetpack"; + case ACCOUNT_LOGOUT: + return "account_logout"; + case PERFORMED_JETPACK_SIGN_IN_FROM_STATS_SCREEN: + return "stats_screen_signed_into_jetpack"; + case STATS_ACCESSED: + return "stats_accessed"; + case STATS_INSIGHTS_ACCESSED: + return "stats_insights_accessed"; + case STATS_PERIOD_DAYS_ACCESSED: + return "stats_period_accessed"; + case STATS_PERIOD_WEEKS_ACCESSED: + return "stats_period_accessed"; + case STATS_PERIOD_MONTHS_ACCESSED: + return "stats_period_accessed"; + case STATS_PERIOD_YEARS_ACCESSED: + return "stats_period_accessed"; + case STATS_VIEW_ALL_ACCESSED: + return "stats_view_all_accessed"; + case STATS_SINGLE_POST_ACCESSED: + return "stats_single_post_accessed"; + case STATS_TAPPED_BAR_CHART: + return "stats_bar_chart_tapped"; + case STATS_SCROLLED_TO_BOTTOM: + return "stats_scrolled_to_bottom"; + case STATS_SELECTED_INSTALL_JETPACK: + return "stats_install_jetpack_selected"; + case STATS_SELECTED_CONNECT_JETPACK: + return "stats_connect_jetpack_selected"; + case STATS_WIDGET_ADDED: + return "stats_widget_added"; + case STATS_WIDGET_REMOVED: + return "stats_widget_removed"; + case STATS_WIDGET_TAPPED: + return "stats_widget_tapped"; + case PUSH_NOTIFICATION_RECEIVED: + return "push_notification_received"; + case PUSH_NOTIFICATION_TAPPED: + return "push_notification_alert_tapped"; + case SUPPORT_OPENED_HELPSHIFT_SCREEN: + return "support_helpshift_screen_opened"; + case SUPPORT_SENT_REPLY_TO_SUPPORT_MESSAGE: + return "support_reply_to_support_message_sent"; + case LOGIN_MAGIC_LINK_EXITED: + return "login_magic_link_exited"; + case LOGIN_MAGIC_LINK_FAILED: + return "login_magic_link_failed"; + case LOGIN_MAGIC_LINK_OPENED: + return "login_magic_link_opened"; + case LOGIN_MAGIC_LINK_REQUESTED: + return "login_magic_link_requested"; + case LOGIN_MAGIC_LINK_SUCCEEDED: + return "login_magic_link_succeeded"; + case LOGIN_FAILED: + return "login_failed_to_login"; + case LOGIN_FAILED_TO_GUESS_XMLRPC: + return "login_failed_to_guess_xmlrpc"; + case LOGIN_INSERTED_INVALID_URL: + return "login_inserted_invalid_url"; + case LOGIN_AUTOFILL_CREDENTIALS_FILLED: + return "login_autofill_credentials_filled"; + case LOGIN_AUTOFILL_CREDENTIALS_UPDATED: + return "login_autofill_credentials_updated"; + case PERSON_REMOVED: + return "people_management_person_removed"; + case PERSON_UPDATED: + return "people_management_person_updated"; + case PUSH_AUTHENTICATION_APPROVED: + return "push_authentication_approved"; + case PUSH_AUTHENTICATION_EXPIRED: + return "push_authentication_expired"; + case PUSH_AUTHENTICATION_FAILED: + return "push_authentication_failed"; + case PUSH_AUTHENTICATION_IGNORED: + return "push_authentication_ignored"; + case NOTIFICATION_SETTINGS_LIST_OPENED: + return "notification_settings_list_opened"; + case NOTIFICATION_SETTINGS_STREAMS_OPENED: + return "notification_settings_streams_opened"; + case NOTIFICATION_SETTINGS_DETAILS_OPENED: + return "notification_settings_details_opened"; + case ME_ACCESSED: + return "me_tab_accessed"; + case ME_GRAVATAR_TAPPED: + return "me_gravatar_tapped"; + case ME_GRAVATAR_TOOLTIP_TAPPED: + return "me_gravatar_tooltip_tapped"; + case ME_GRAVATAR_PERMISSIONS_INTERRUPTED: + return "me_gravatar_permissions_interrupted"; + case ME_GRAVATAR_PERMISSIONS_DENIED: + return "me_gravatar_permissions_denied"; + case ME_GRAVATAR_PERMISSIONS_ACCEPTED: + return "me_gravatar_permissions_accepted"; + case ME_GRAVATAR_SHOT_NEW: + return "me_gravatar_shot_new"; + case ME_GRAVATAR_GALLERY_PICKED: + return "me_gravatar_gallery_picked"; + case ME_GRAVATAR_CROPPED: + return "me_gravatar_cropped"; + case ME_GRAVATAR_UPLOADED: + return "me_gravatar_uploaded"; + case ME_GRAVATAR_UPLOAD_UNSUCCESSFUL: + return "me_gravatar_upload_unsuccessful"; + case ME_GRAVATAR_UPLOAD_EXCEPTION: + return "me_gravatar_upload_exception"; + case MY_SITE_ACCESSED: + return "my_site_tab_accessed"; + case THEMES_ACCESSED_THEMES_BROWSER: + return "themes_theme_browser_accessed"; + case THEMES_ACCESSED_SEARCH: + return "themes_search_accessed"; + case THEMES_CHANGED_THEME: + return "themes_theme_changed"; + case THEMES_PREVIEWED_SITE: + return "themes_theme_for_site_previewed"; + case THEMES_DEMO_ACCESSED: + return "themes_demo_accessed"; + case THEMES_CUSTOMIZE_ACCESSED: + return "themes_customize_accessed"; + case THEMES_SUPPORT_ACCESSED: + return "themes_support_accessed"; + case THEMES_DETAILS_ACCESSED: + return "themes_details_accessed"; + case ACCOUNT_SETTINGS_LANGUAGE_CHANGED: + return "account_settings_language_changed"; + case SITE_SETTINGS_ACCESSED: + return "site_settings_accessed"; + case SITE_SETTINGS_ACCESSED_MORE_SETTINGS: + return "site_settings_more_settings_accessed"; + case SITE_SETTINGS_ADDED_LIST_ITEM: + return "site_settings_added_list_item"; + case SITE_SETTINGS_DELETED_LIST_ITEMS: + return "site_settings_deleted_list_items"; + case SITE_SETTINGS_HINT_TOAST_SHOWN: + return "site_settings_hint_toast_shown"; + case SITE_SETTINGS_LEARN_MORE_CLICKED: + return "site_settings_learn_more_clicked"; + case SITE_SETTINGS_LEARN_MORE_LOADED: + return "site_settings_learn_more_loaded"; + case SITE_SETTINGS_SAVED_REMOTELY: + return "site_settings_saved_remotely"; + case SITE_SETTINGS_START_OVER_ACCESSED: + return "site_settings_start_over_accessed"; + case SITE_SETTINGS_START_OVER_CONTACT_SUPPORT_CLICKED: + return "site_settings_start_over_contact_support_clicked"; + case SITE_SETTINGS_EXPORT_SITE_ACCESSED: + return "site_settings_export_site_accessed"; + case SITE_SETTINGS_EXPORT_SITE_REQUESTED: + return "site_settings_export_site_requested"; + case SITE_SETTINGS_EXPORT_SITE_RESPONSE_OK: + return "site_settings_export_site_response_ok"; + case SITE_SETTINGS_EXPORT_SITE_RESPONSE_ERROR: + return "site_settings_export_site_response_error"; + case SITE_SETTINGS_DELETE_SITE_ACCESSED: + return "site_settings_delete_site_accessed"; + case SITE_SETTINGS_DELETE_SITE_PURCHASES_REQUESTED: + return "site_settings_delete_site_purchases_requested"; + case SITE_SETTINGS_DELETE_SITE_PURCHASES_SHOWN: + return "site_settings_delete_site_purchases_shown"; + case SITE_SETTINGS_DELETE_SITE_PURCHASES_SHOW_CLICKED: + return "site_settings_delete_site_purchases_show_clicked"; + case SITE_SETTINGS_DELETE_SITE_REQUESTED: + return "site_settings_delete_site_requested"; + case SITE_SETTINGS_DELETE_SITE_RESPONSE_OK: + return "site_settings_delete_site_response_ok"; + case SITE_SETTINGS_DELETE_SITE_RESPONSE_ERROR: + return "site_settings_delete_site_response_error"; + case ABTEST_START: + return "abtest_start"; + case TRAIN_TRACKS_RENDER: + return "traintracks_render"; + case TRAIN_TRACKS_INTERACT: + return "traintracks_interact"; + default: + return null; + } + } }