Skip to content

Commit d504a59

Browse files
Merge pull request #19786 from wordpress-mobile/task/19450-phase-3-card-analytics
Jetpack Focus: Add analytics tracking for the Jetpack menu card
2 parents 1e5dc33 + 5baf666 commit d504a59

File tree

4 files changed

+64
-8
lines changed

4 files changed

+64
-8
lines changed

WordPress/Classes/Utility/Analytics/WPAnalyticsEvent.swift

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,12 @@ import Foundation
414414
case jetpackSiteCreationOverlayDisplayed
415415
case jetpackSiteCreationOverlayButtonTapped
416416
case jetpackSiteCreationOverlayDismissed
417+
case jetpackBrandingMenuCardDisplayed
418+
case jetpackBrandingMenuCardTapped
419+
case jetpackBrandingMenuCardLinkTapped
420+
case jetpackBrandingMenuCardHidden
421+
case jetpackBrandingMenuCardRemindLater
422+
case jetpackBrandingMenuCardContextualMenuAccessed
417423

418424
/// A String that represents the event
419425
var value: String {
@@ -1123,6 +1129,18 @@ import Foundation
11231129
return "remove_site_creation_overlay_button_tapped"
11241130
case .jetpackSiteCreationOverlayDismissed:
11251131
return "remove_site_creation_overlay_dismissed"
1132+
case .jetpackBrandingMenuCardDisplayed:
1133+
return "remove_feature_card_displayed"
1134+
case .jetpackBrandingMenuCardTapped:
1135+
return "remove_feature_card_tapped"
1136+
case .jetpackBrandingMenuCardLinkTapped:
1137+
return "remove_feature_card_link_tapped"
1138+
case .jetpackBrandingMenuCardHidden:
1139+
return "remove_feature_card_hide_tapped"
1140+
case .jetpackBrandingMenuCardRemindLater:
1141+
return "remove_feature_card_remind_later_tapped"
1142+
case .jetpackBrandingMenuCardContextualMenuAccessed:
1143+
return "remove_feature_card_menu_accessed"
11261144

11271145
} // END OF SWITCH
11281146
}

WordPress/Classes/ViewRelated/Jetpack/Branding/Menu Card/BlogDetailsViewController+JetpackBrandingMenuCard.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ extension BlogDetailsViewController {
1010
@objc func jetpackCardSectionViewModel() -> BlogDetailsSection {
1111
let row = BlogDetailsRow()
1212
row.callback = {
13+
let presenter = JetpackBrandingMenuCardPresenter()
1314
JetpackFeaturesRemovalCoordinator.presentOverlayIfNeeded(from: .card, in: self)
15+
presenter.trackCardTapped()
1416
}
1517

1618
let section = BlogDetailsSection(title: nil,

WordPress/Classes/ViewRelated/Jetpack/Branding/Menu Card/JetpackBrandingMenuCardCell.swift

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ class JetpackBrandingMenuCardCell: UITableViewCell {
2323
frameView.configureButtonContainerStackView()
2424
frameView.hideHeader()
2525

26-
frameView.onEllipsisButtonTap = {
27-
// TODO: Track menu shown
26+
frameView.onEllipsisButtonTap = { [weak self] in
27+
self?.presenter.trackContexualMenuAccessed()
2828
}
2929
frameView.ellipsisButton.showsMenuAsPrimaryAction = true
3030
frameView.ellipsisButton.menu = contextMenu
@@ -134,7 +134,8 @@ class JetpackBrandingMenuCardCell: UITableViewCell {
134134
private func commonInit() {
135135
setupViews()
136136
setupContent()
137-
// TODO: Track card shown
137+
138+
presenter.trackCardShown()
138139
}
139140

140141
// MARK: Helpers
@@ -164,7 +165,7 @@ class JetpackBrandingMenuCardCell: UITableViewCell {
164165
let webViewController = WebViewControllerFactory.controller(url: url, source: Constants.analyticsSource)
165166
let navController = UINavigationController(rootViewController: webViewController)
166167
viewController?.present(navController, animated: true)
167-
// TODO: Track button tapped
168+
presenter.trackLinkTapped()
168169
}
169170
}
170171

@@ -191,13 +192,11 @@ private extension JetpackBrandingMenuCardCell {
191192
private func remindMeLaterTapped() {
192193
presenter.remindLaterTapped()
193194
viewController?.reloadTableView()
194-
// TODO: Track button tapped
195195
}
196196

197197
private func hideThisTapped() {
198198
presenter.hideThisTapped()
199199
viewController?.reloadTableView()
200-
// TODO: Track button tapped
201200
}
202201
}
203202

WordPress/Classes/ViewRelated/Jetpack/Branding/Menu Card/JetpackBrandingMenuCardPresenter.swift

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ class JetpackBrandingMenuCardPresenter {
1111

1212
private let remoteConfigStore: RemoteConfigStore
1313
private let persistenceStore: UserPersistentRepository
14-
private let featureFlagStore: RemoteFeatureFlagStore
1514
private let currentDateProvider: CurrentDateProvider
15+
private let featureFlagStore: RemoteFeatureFlagStore
1616

1717
// MARK: Initializers
1818

@@ -21,9 +21,9 @@ class JetpackBrandingMenuCardPresenter {
2121
persistenceStore: UserPersistentRepository = UserDefaults.standard,
2222
currentDateProvider: CurrentDateProvider = DefaultCurrentDateProvider()) {
2323
self.remoteConfigStore = remoteConfigStore
24-
self.featureFlagStore = featureFlagStore
2524
self.persistenceStore = persistenceStore
2625
self.currentDateProvider = currentDateProvider
26+
self.featureFlagStore = featureFlagStore
2727
}
2828

2929
// MARK: Public Functions
@@ -55,10 +55,46 @@ class JetpackBrandingMenuCardPresenter {
5555
let duration = Constants.remindLaterDurationInDays * Constants.secondsInDay
5656
let newDate = now.addingTimeInterval(TimeInterval(duration))
5757
showCardOnDate = newDate
58+
trackRemindMeLaterTapped()
5859
}
5960

6061
func hideThisTapped() {
6162
shouldHideCard = true
63+
trackHideThisTapped()
64+
}
65+
}
66+
67+
// MARK: Analytics
68+
69+
extension JetpackBrandingMenuCardPresenter {
70+
71+
func trackCardShown() {
72+
WPAnalytics.track(.jetpackBrandingMenuCardDisplayed, properties: analyticsProperties)
73+
}
74+
75+
func trackLinkTapped() {
76+
WPAnalytics.track(.jetpackBrandingMenuCardLinkTapped, properties: analyticsProperties)
77+
}
78+
79+
func trackCardTapped() {
80+
WPAnalytics.track(.jetpackBrandingMenuCardTapped, properties: analyticsProperties)
81+
}
82+
83+
func trackContexualMenuAccessed() {
84+
WPAnalytics.track(.jetpackBrandingMenuCardContextualMenuAccessed, properties: analyticsProperties)
85+
}
86+
87+
func trackHideThisTapped() {
88+
WPAnalytics.track(.jetpackBrandingMenuCardHidden, properties: analyticsProperties)
89+
}
90+
91+
func trackRemindMeLaterTapped() {
92+
WPAnalytics.track(.jetpackBrandingMenuCardRemindLater, properties: analyticsProperties)
93+
}
94+
95+
private var analyticsProperties: [String: String] {
96+
let phase = JetpackFeaturesRemovalCoordinator.generalPhase(featureFlagStore: featureFlagStore)
97+
return [Constants.phaseAnalyticsKey: phase.rawValue]
6298
}
6399
}
64100

@@ -90,6 +126,7 @@ private extension JetpackBrandingMenuCardPresenter {
90126
static let remindLaterDurationInDays = 4
91127
static let shouldHideCardKey = "JetpackBrandingShouldHideCardKey"
92128
static let showCardOnDateKey = "JetpackBrandingShowCardOnDateKey"
129+
static let phaseAnalyticsKey = "phase"
93130
}
94131

95132
enum Strings {

0 commit comments

Comments
 (0)