@@ -17,6 +17,7 @@ final class JetpackSetupViewModel: ObservableObject {
1717 private let storeNavigationHandler : ( _ connectedEmail: String ? ) -> Void
1818 private let wpcomCredentials : Credentials ?
1919 private var isPluginActivated = false
20+ private var connectionType = WooAnalyticsEvent . JetpackSetup. ConnectionType. native
2021
2122 @Published private( set) var setupSteps : [ JetpackInstallStep ]
2223
@@ -151,15 +152,12 @@ final class JetpackSetupViewModel: ObservableObject {
151152 }
152153
153154 func navigateToStore( ) {
154- trackSetupDuringLogin ( . loginJetpackSetupGoToStoreTapped)
155- trackSetupAfterLogin ( tap: . goToStore)
155+ trackSetup ( tap: . goToStore)
156156 storeNavigationHandler ( jetpackConnectedEmail)
157157 }
158158
159159 func retryAllSteps( ) {
160- trackSetupDuringLogin ( . loginJetpackSetupScreenTryAgainButtonTapped,
161- properties: currentSetupStep? . analyticsDescription)
162- trackSetupAfterLogin ( tap: . retry)
160+ trackSetup ( tap: . retry)
163161
164162 setupFailed = false
165163 setupError = nil
@@ -172,31 +170,18 @@ final class JetpackSetupViewModel: ObservableObject {
172170
173171 /// LoginJetpackSetupInterruptedView
174172 func didTapContinueConnectionButton( ) {
175- trackSetupDuringLogin ( . loginJetpackSetupScreenTryAgainButtonTapped)
176- trackSetupAfterLogin ( tap: . continueSetup)
173+ trackSetup ( tap: . continueSetup)
177174 checkJetpackConnection ( afterConnection: false )
178175 }
179176
180- /// Tracks events if the current flow is Jetpack setup during login
181- func trackSetupDuringLogin( _ stat: WooAnalyticsStat ,
182- properties: [ AnyHashable : Any ] ? = nil ,
183- failure: Error ? = nil ) {
184- guard stores. isAuthenticated == false else {
185- return
186- }
187- analytics. track ( stat, properties: properties, error: failure)
188- }
189-
190177 /// Tracks events if the current flow is Jetpack setup after login with site credentials
191- func trackSetupAfterLogin( tap: WooAnalyticsEvent . JetpackSetup . SetupFlow . TapTarget ? = nil ,
192- failure: Error ? = nil ) {
193- guard stores. isAuthenticated else {
194- return
195- }
178+ func trackSetup( tap: WooAnalyticsEvent . JetpackSetup . SetupFlow . TapTarget ? = nil ,
179+ failure: Error ? = nil ) {
196180 /// Helper for analytics since `currentSetupStep` is optional.
197181 let currentStepForAnalytics : JetpackInstallStep = currentSetupStep ?? ( connectionOnly ? . connection : . installation)
198182 analytics. track ( event: . JetpackSetup. setupFlow ( step: currentStepForAnalytics,
199183 tap: tap,
184+ connectionType: connectionType,
200185 failure: failure) )
201186 }
202187}
@@ -236,17 +221,15 @@ private extension JetpackSetupViewModel {
236221
237222 func installJetpack( ) {
238223 currentSetupStep = . installation
239- trackSetupAfterLogin ( )
224+ trackSetup ( )
240225
241226 let action = JetpackConnectionAction . installJetpackPlugin { [ weak self] result in
242227 guard let self else { return }
243228 switch result {
244229 case . success:
245- self . trackSetupDuringLogin ( . loginJetpackSetupScreenInstallSuccessful)
246230 self . activateJetpack ( )
247231 case . failure( let error) :
248- self . trackSetupDuringLogin ( . loginJetpackSetupScreenInstallFailed, failure: error)
249- self . trackSetupAfterLogin ( failure: error)
232+ self . trackSetup ( failure: error)
250233 DDLogError ( " ⛔️ Error installing Jetpack: \( error) " )
251234 self . setupError = error
252235 self . setupFailed = true
@@ -257,17 +240,15 @@ private extension JetpackSetupViewModel {
257240
258241 func activateJetpack( ) {
259242 currentSetupStep = . activation
260- trackSetupAfterLogin ( )
243+ trackSetup ( )
261244 let action = JetpackConnectionAction . activateJetpackPlugin { [ weak self] result in
262245 guard let self else { return }
263246 switch result {
264247 case . success:
265248 isPluginActivated = true
266- self . trackSetupDuringLogin ( . loginJetpackSetupActivationSuccessful)
267249 self . checkJetpackConnection ( afterConnection: false )
268250 case . failure( let error) :
269- self . trackSetupDuringLogin ( . loginJetpackSetupActivationFailed, failure: error)
270- self . trackSetupAfterLogin ( failure: error)
251+ self . trackSetup ( failure: error)
271252 DDLogError ( " ⛔️ Error activating Jetpack: \( error) " )
272253 self . setupError = error
273254 self . setupFailed = true
@@ -281,12 +262,12 @@ private extension JetpackSetupViewModel {
281262 ///
282263 func startConnectionWithWebView( ) {
283264 currentSetupStep = . connection
284- trackSetupAfterLogin ( )
265+ connectionType = . web
266+ trackSetup ( )
285267 let action = JetpackConnectionAction . fetchJetpackConnectionURL { [ weak self] result in
286268 guard let self else { return }
287269 switch result {
288270 case . success( let url) :
289- self . trackSetupDuringLogin ( . loginJetpackSetupFetchJetpackConnectionURLSuccessful)
290271 /// Checks if the fetch URL is for account connection;
291272 /// if not, use the web view solution to avoid the need for cookie-nonce.
292273 /// Reference: pe5sF9-1le-p2#comment-1942.
@@ -297,8 +278,7 @@ private extension JetpackSetupViewModel {
297278 }
298279 self . shouldPresentWebView = true
299280 case . failure( let error) :
300- self . trackSetupDuringLogin ( . loginJetpackSetupFetchJetpackConnectionURLFailed, failure: error)
301- self . trackSetupAfterLogin ( failure: error)
281+ self . trackSetup ( failure: error)
302282 DDLogError ( " ⛔️ Error fetching Jetpack connection URL: \( error) " )
303283 self . setupError = error
304284 self . setupFailed = true
@@ -369,7 +349,6 @@ private extension JetpackSetupViewModel {
369349 let missingWpcomUserError = NSError ( domain: Constants . errorDomain,
370350 code: Constants . errorCodeNoWPComUser,
371351 userInfo: [ Constants . errorUserInfoReason: Constants . errorUserInfoNoWPComUser] )
372- trackSetupDuringLogin ( . loginJetpackSetupCannotFindWPCOMUser, failure: missingWpcomUserError)
373352 if retryCount == Constants . maxRetryCount {
374353 return didFailJetpackConnection ( with: missingWpcomUserError)
375354 }
@@ -436,7 +415,7 @@ private extension JetpackSetupViewModel {
436415
437416 func provisionSiteConnection( blogID: Int64 ) {
438417 currentSetupStep = . connection
439- trackSetupAfterLogin ( )
418+ trackSetup ( )
440419 stores. dispatch ( JetpackConnectionAction . provisionConnection ( completion: { [ weak self] result in
441420 guard let self else { return }
442421 switch result {
@@ -475,17 +454,13 @@ private extension JetpackSetupViewModel {
475454 jetpackConnectedEmail = connectedEmail
476455 currentConnectionStep = . authorized
477456 currentSetupStep = . done
478-
479- trackSetupDuringLogin ( . loginJetpackSetupAllStepsMarkedDone)
480- trackSetupAfterLogin ( )
457+ trackSetup ( )
481458 }
482459
483460 func didFailJetpackConnection( with error: Error ) {
484- setupFailed = true
485461 setupError = error
486- if let setupError {
487- analytics. track ( . loginJetpackSetupErrorCheckingJetpackConnection, withError: setupError)
488- }
462+ trackSetup ( failure: error)
463+ setupFailed = true
489464 }
490465}
491466
0 commit comments