Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import org.wordpress.android.modules.UI_THREAD
import org.wordpress.android.ui.PagePostCreationSourcesDetail.STORY_FROM_MY_SITE
import org.wordpress.android.ui.mysite.MySiteCardAndItem.Card.DashboardCards
import org.wordpress.android.ui.mysite.MySiteCardAndItem.Card.DomainRegistrationCard
import org.wordpress.android.ui.mysite.MySiteCardAndItem.Card.QuickStartCard
import org.wordpress.android.ui.mysite.MySiteCardAndItem.Item.InfoItem
import org.wordpress.android.ui.mysite.MySiteCardAndItem.SiteInfoHeaderCard
import org.wordpress.android.ui.mysite.MySiteCardAndItem.Type
Expand Down Expand Up @@ -1247,11 +1248,16 @@ class MySiteViewModel @Inject constructor(
siteSelected.cardAndItems.filterIsInstance<DomainRegistrationCard>()
.forEach { domainRegistrationCardShownTracker.trackShown(it.type) }
siteSelected.cardAndItems.filterIsInstance<DashboardCards>().forEach { cardsTracker.trackShown(it) }
siteSelected.cardAndItems.filterIsInstance<QuickStartCard>()
.firstOrNull()?.let { quickStartTracker.trackShown(it.type, defaultABExperimentTab) }
siteSelected.dashboardCardsAndItems.filterIsInstance<QuickStartCard>()
.firstOrNull()?.let { cardsTracker.trackQuickStartCardShown(quickStartRepository.quickStartType) }
}

private fun resetShownTrackers() {
domainRegistrationCardShownTracker.resetShown()
cardsTracker.resetShown()
quickStartTracker.resetShown()
}

private fun trackTabChanged(isSiteMenu: Boolean) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ import org.wordpress.android.ui.mysite.MySiteCardAndItem.Card.DashboardCards.Das
import org.wordpress.android.ui.mysite.MySiteCardAndItem.Card.DashboardCards.DashboardCard.PostCard.PostCardWithoutPostItems
import org.wordpress.android.ui.mysite.MySiteCardAndItem.Card.DashboardCards.DashboardCard.TodaysStatsCard
import org.wordpress.android.ui.mysite.MySiteCardAndItem.Card.DashboardCards.DashboardCard.TodaysStatsCard.TodaysStatsCardWithData
import org.wordpress.android.ui.mysite.MySiteCardAndItem.DashboardCardType
import org.wordpress.android.ui.mysite.cards.dashboard.CardsTracker.StatsSubtype
import org.wordpress.android.ui.mysite.cards.dashboard.CardsTracker.Type
import org.wordpress.android.ui.quickstart.QuickStartType
import org.wordpress.android.util.analytics.AnalyticsTrackerWrapper
import javax.inject.Inject

Expand Down Expand Up @@ -72,6 +74,15 @@ class CardsShownTracker @Inject constructor(
}
}

fun trackQuickStartCardShown(quickStartType: QuickStartType) {
trackCardShown(
Pair(
DashboardCardType.QUICK_START_CARD.toTypeValue().label,
"quick_start_${quickStartType.trackingLabel}"
)
)
}

private fun trackCardShown(pair: Pair<String, String>) {
if (!cardsShownTracked.contains(pair)) {
cardsShownTracked.add(pair)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,13 @@ import org.wordpress.android.ui.mysite.MySiteCardAndItem.DashboardCardType
import org.wordpress.android.ui.mysite.cards.dashboard.CardsTracker.PostSubtype
import org.wordpress.android.ui.mysite.cards.dashboard.CardsTracker.QuickStartSubtype
import org.wordpress.android.ui.mysite.cards.dashboard.CardsTracker.Type
import org.wordpress.android.ui.mysite.cards.dashboard.CardsTracker.Type.QUICK_START
import org.wordpress.android.ui.mysite.cards.dashboard.posts.PostCardType
import org.wordpress.android.ui.quickstart.QuickStartTracker
import org.wordpress.android.ui.quickstart.QuickStartType
import org.wordpress.android.util.analytics.AnalyticsTrackerWrapper
import javax.inject.Inject

@Suppress("TooManyFunctions")
class CardsTracker @Inject constructor(
private val cardsShownTracker: CardsShownTracker,
private val analyticsTrackerWrapper: AnalyticsTrackerWrapper,
Expand Down Expand Up @@ -81,7 +82,7 @@ class CardsTracker @Inject constructor(

private fun trackCardItemClicked(type: String, subtype: String) {
val props = mapOf(TYPE to type, SUBTYPE to subtype)
if (type == QUICK_START.label) {
if (type == Type.QUICK_START.label) {
quickStartTracker.track(Stat.MY_SITE_DASHBOARD_CARD_ITEM_TAPPED, props)
} else {
analyticsTrackerWrapper.track(Stat.MY_SITE_DASHBOARD_CARD_ITEM_TAPPED, props)
Expand All @@ -96,6 +97,10 @@ class CardsTracker @Inject constructor(
cardsShownTracker.track(dashboardCards)
}

fun trackQuickStartCardShown(quickStartType: QuickStartType) {
cardsShownTracker.trackQuickStartCardShown(quickStartType)
}

companion object {
const val TYPE = "type"
const val SUBTYPE = "subtype"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package org.wordpress.android.ui.quickstart

import org.wordpress.android.analytics.AnalyticsTracker.Stat
import org.wordpress.android.ui.mysite.MySiteCardAndItem
import org.wordpress.android.ui.mysite.MySiteCardAndItem.Type.QUICK_START_CARD
import org.wordpress.android.ui.mysite.tabs.MySiteTabType
import org.wordpress.android.ui.prefs.AppPrefsWrapper
import org.wordpress.android.util.analytics.AnalyticsTrackerWrapper
import javax.inject.Inject
Expand All @@ -9,6 +12,8 @@ class QuickStartTracker @Inject constructor(
private val analyticsTrackerWrapper: AnalyticsTrackerWrapper,
private val appPrefsWrapper: AppPrefsWrapper
) {
private val cardsShownTracked = mutableListOf<Pair<MySiteCardAndItem.Type, Map<String, String>>>()

@JvmOverloads
fun track(stat: Stat, properties: Map<String, Any?>? = null) {
val props = HashMap<String, Any?>()
Expand All @@ -17,7 +22,26 @@ class QuickStartTracker @Inject constructor(
analyticsTrackerWrapper.track(stat, props)
}

fun trackShown(itemType: MySiteCardAndItem.Type, tabType: MySiteTabType) {
if (itemType == QUICK_START_CARD) {
val props = mapOf(
TAB to tabType.trackingLabel,
SITE_TYPE to appPrefsWrapper.getLastSelectedQuickStartType().trackingLabel
)
val cardsShownTrackedPair = Pair(itemType, props)
if (!cardsShownTracked.contains(cardsShownTrackedPair)) {
cardsShownTracked.add(cardsShownTrackedPair)
analyticsTrackerWrapper.track(Stat.QUICK_START_CARD_SHOWN, props)
}
}
}

fun resetShown() {
cardsShownTracked.clear()
}

companion object {
private const val SITE_TYPE = "site_type"
private const val TAB = "tab"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import org.wordpress.android.ui.mysite.MySiteCardAndItem.Card.DashboardCards.Das
import org.wordpress.android.ui.mysite.cards.dashboard.CardsTracker.PostSubtype
import org.wordpress.android.ui.mysite.cards.dashboard.CardsTracker.Type
import org.wordpress.android.ui.mysite.cards.dashboard.posts.PostCardType
import org.wordpress.android.ui.quickstart.QuickStartType.NewSiteQuickStartType
import org.wordpress.android.ui.utils.UiString.UiStringText
import org.wordpress.android.util.analytics.AnalyticsTrackerWrapper

Expand All @@ -30,6 +31,13 @@ class CardsShownTrackerTest {
cardsShownTracker = CardsShownTracker(analyticsTracker)
}

@Test
fun `when quick start card is shown on dashboard tab, then quick start card shown event is tracked`() {
cardsShownTracker.trackQuickStartCardShown(NewSiteQuickStartType)

verifyQuickStartCardShownTracked(Type.QUICK_START.label, "quick_start_${NewSiteQuickStartType.trackingLabel}")
}

@Test
fun `when post card create first card is shown, then create first shown event is tracked`() {
cardsShownTracker.track(buildDashboardCards(PostCardType.CREATE_FIRST))
Expand Down Expand Up @@ -75,6 +83,13 @@ class CardsShownTrackerTest {
)
}

private fun verifyQuickStartCardShownTracked(type: String, subtype: String) {
verify(analyticsTracker).track(
Stat.MY_SITE_DASHBOARD_CARD_SHOWN,
mapOf(CardsTracker.TYPE to type, CardsTracker.SUBTYPE to subtype)
)
}

private fun buildDashboardCards(postCardType: PostCardType) = DashboardCards(
cards = mutableListOf<DashboardCard>().apply {
when (postCardType) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -624,6 +624,7 @@ public enum Stat {
SUPPORT_IDENTITY_FORM_VIEWED,
SUPPORT_IDENTITY_SET,
QUICK_START_STARTED,
QUICK_START_CARD_SHOWN,
QUICK_START_TAPPED,
QUICK_START_TASK_DIALOG_VIEWED,
QUICK_START_TASK_DIALOG_NEGATIVE_TAPPED,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1814,6 +1814,8 @@ public static String getEventNameForStat(AnalyticsTracker.Stat stat) {
return "quick_start_task_dialog_viewed";
case QUICK_START_STARTED:
return "quick_start_started";
case QUICK_START_CARD_SHOWN:
return "quick_start_card_shown";
case QUICK_START_TAPPED:
return "quick_start_tapped";
case QUICK_START_TASK_DIALOG_NEGATIVE_TAPPED:
Expand Down