|
| 1 | +import WordPressShared |
| 2 | + |
| 3 | + |
| 4 | +/// This enum contains all of the events we track in the app. |
| 5 | +/// |
| 6 | +public enum WooAnalyticsStat: String { |
| 7 | + |
| 8 | + // Application Events |
| 9 | + // |
| 10 | + case applicationOpened = "application_opened" |
| 11 | + case applicationClosed = "application_closed" |
| 12 | + |
| 13 | + // Authentication Events |
| 14 | + // |
| 15 | + case signedIn = "signed_in" |
| 16 | + case logout = "account_logout" |
| 17 | + case openedLogin = "login_accessed" |
| 18 | + case loginFailed = "login_failed_to_login" |
| 19 | + case loginAutoFillCredentialsFilled = "login_autofill_credentials_filled" |
| 20 | + case loginAutoFillCredentialsUpdated = "login_autofill_credentials_updated" |
| 21 | + case loginProloguePaged = "login_prologue_paged" |
| 22 | + case loginPrologueViewed = "login_prologue_viewed" |
| 23 | + case loginEmailFormViewed = "login_email_form_viewed" |
| 24 | + case loginMagicLinkOpenEmailClientViewed = "login_magic_link_open_email_client_viewed" |
| 25 | + case loginMagicLinkRequestFormViewed = "login_magic_link_request_form_viewed" |
| 26 | + case loginMagicLinkExited = "login_magic_link_exited" |
| 27 | + case loginMagicLinkFailed = "login_magic_link_failed" |
| 28 | + case loginMagicLinkOpened = "login_magic_link_opened" |
| 29 | + case loginMagicLinkRequested = "login_magic_link_requested" |
| 30 | + case loginMagicLinkSucceeded = "login_magic_link_succeeded" |
| 31 | + case loginPasswordFormViewed = "login_password_form_viewed" |
| 32 | + case loginURLFormViewed = "login_url_form_viewed" |
| 33 | + case loginURLHelpScreenViewed = "login_url_help_screen_viewed" |
| 34 | + case loginUsernamePasswordFormViewed = "login_username_password_form_viewed" |
| 35 | + case loginTwoFactorFormViewed = "login_two_factor_form_viewed" |
| 36 | + case loginEpilogueViewed = "login_epilogue_viewed" |
| 37 | + case loginForgotPasswordClicked = "login_forgot_password_clicked" |
| 38 | + case loginSocialButtonClick = "login_social_button_click" |
| 39 | + case loginSocialButtonFailure = "login_social_button_failure" |
| 40 | + case loginSocialConnectSuccess = "login_social_connect_success" |
| 41 | + case loginSocialConnectFailure = "login_social_connect_failure" |
| 42 | + case loginSocialSuccess = "login_social_login_success" |
| 43 | + case loginSocialFailure = "login_social_login_failure" |
| 44 | + case loginSocial2faNeeded = "login_social_2fa_needed" |
| 45 | + case loginSocialAccountsNeedConnecting = "login_social_accounts_need_connecting" |
| 46 | + case loginSocialErrorUnknownUser = "login_social_error_unknown_user" |
| 47 | + case onePasswordFailed = "one_password_failed" |
| 48 | + case onePasswordLogin = "one_password_login" |
| 49 | + case onePasswordSignup = "one_password_signup" |
| 50 | + case twoFactorCodeRequested = "two_factor_code_requested" |
| 51 | + case twoFactorSentSMS = "two_factor_sent_sms" |
| 52 | +} |
| 53 | + |
| 54 | +public extension WooAnalyticsStat { |
| 55 | + |
| 56 | + /// Converts the provided WPAnalyticsStat into a WooAnalyticsStat. |
| 57 | + /// This whole process kinda stinks, but we need this for the `WordPressAuthenticatorDelegate` |
| 58 | + /// implementation. ☹️ Feel free to refactor later on! |
| 59 | + /// |
| 60 | + /// - Parameter stat: The WPAnalyticsStat to convert |
| 61 | + /// - Returns: The corresponding WooAnalyticsStat or nil if it cannot be converted |
| 62 | + /// |
| 63 | + static func valueOf(stat: WPAnalyticsStat) -> WooAnalyticsStat? { |
| 64 | + var wooEvent: WooAnalyticsStat? = nil |
| 65 | + |
| 66 | + switch stat { |
| 67 | + case .signedIn: |
| 68 | + wooEvent = WooAnalyticsStat.signedIn |
| 69 | + case .signedInToJetpack: |
| 70 | + wooEvent = WooAnalyticsStat.signedIn |
| 71 | + case .logout: |
| 72 | + wooEvent = WooAnalyticsStat.logout |
| 73 | + case .openedLogin: |
| 74 | + wooEvent = WooAnalyticsStat.openedLogin |
| 75 | + case .loginFailed: |
| 76 | + wooEvent = WooAnalyticsStat.loginFailed |
| 77 | + case .loginAutoFillCredentialsFilled: |
| 78 | + wooEvent = WooAnalyticsStat.loginAutoFillCredentialsFilled |
| 79 | + case .loginAutoFillCredentialsUpdated: |
| 80 | + wooEvent = WooAnalyticsStat.loginAutoFillCredentialsUpdated |
| 81 | + case .loginProloguePaged: |
| 82 | + wooEvent = WooAnalyticsStat.loginProloguePaged |
| 83 | + case .loginPrologueViewed: |
| 84 | + wooEvent = WooAnalyticsStat.loginPrologueViewed |
| 85 | + case .loginEmailFormViewed: |
| 86 | + wooEvent = WooAnalyticsStat.loginEmailFormViewed |
| 87 | + case .loginMagicLinkOpenEmailClientViewed: |
| 88 | + wooEvent = WooAnalyticsStat.loginMagicLinkOpenEmailClientViewed |
| 89 | + case .loginMagicLinkRequestFormViewed: |
| 90 | + wooEvent = WooAnalyticsStat.loginMagicLinkRequestFormViewed |
| 91 | + case .loginMagicLinkExited: |
| 92 | + wooEvent = WooAnalyticsStat.loginMagicLinkExited |
| 93 | + case .loginMagicLinkFailed: |
| 94 | + wooEvent = WooAnalyticsStat.loginMagicLinkFailed |
| 95 | + case .loginMagicLinkOpened: |
| 96 | + wooEvent = WooAnalyticsStat.loginMagicLinkOpened |
| 97 | + case .loginMagicLinkRequested: |
| 98 | + wooEvent = WooAnalyticsStat.loginMagicLinkRequested |
| 99 | + case .loginMagicLinkSucceeded: |
| 100 | + wooEvent = WooAnalyticsStat.loginMagicLinkSucceeded |
| 101 | + case .loginPasswordFormViewed: |
| 102 | + wooEvent = WooAnalyticsStat.loginPasswordFormViewed |
| 103 | + case .loginURLFormViewed: |
| 104 | + wooEvent = WooAnalyticsStat.loginURLFormViewed |
| 105 | + case .loginURLHelpScreenViewed: |
| 106 | + wooEvent = WooAnalyticsStat.loginURLHelpScreenViewed |
| 107 | + case .loginUsernamePasswordFormViewed: |
| 108 | + wooEvent = WooAnalyticsStat.loginUsernamePasswordFormViewed |
| 109 | + case .loginTwoFactorFormViewed: |
| 110 | + wooEvent = WooAnalyticsStat.loginTwoFactorFormViewed |
| 111 | + case .loginEpilogueViewed: |
| 112 | + wooEvent = WooAnalyticsStat.loginEpilogueViewed |
| 113 | + case .loginForgotPasswordClicked: |
| 114 | + wooEvent = WooAnalyticsStat.loginForgotPasswordClicked |
| 115 | + case .loginSocialButtonClick: |
| 116 | + wooEvent = WooAnalyticsStat.loginSocialButtonClick |
| 117 | + case .loginSocialButtonFailure: |
| 118 | + wooEvent = WooAnalyticsStat.loginSocialButtonFailure |
| 119 | + case .loginSocialConnectSuccess: |
| 120 | + wooEvent = WooAnalyticsStat.loginSocialConnectSuccess |
| 121 | + case .loginSocialConnectFailure: |
| 122 | + wooEvent = WooAnalyticsStat.loginSocialConnectFailure |
| 123 | + case .loginSocialSuccess: |
| 124 | + wooEvent = WooAnalyticsStat.loginSocialSuccess |
| 125 | + case .loginSocialFailure: |
| 126 | + wooEvent = WooAnalyticsStat.loginSocialFailure |
| 127 | + case .loginSocial2faNeeded: |
| 128 | + wooEvent = WooAnalyticsStat.loginSocial2faNeeded |
| 129 | + case .loginSocialAccountsNeedConnecting: |
| 130 | + wooEvent = WooAnalyticsStat.loginSocialAccountsNeedConnecting |
| 131 | + case .loginSocialErrorUnknownUser: |
| 132 | + wooEvent = WooAnalyticsStat.loginSocialErrorUnknownUser |
| 133 | + case .onePasswordFailed: |
| 134 | + wooEvent = WooAnalyticsStat.onePasswordFailed |
| 135 | + case .onePasswordLogin: |
| 136 | + wooEvent = WooAnalyticsStat.onePasswordLogin |
| 137 | + case .onePasswordSignup: |
| 138 | + wooEvent = WooAnalyticsStat.onePasswordSignup |
| 139 | + case .twoFactorCodeRequested: |
| 140 | + wooEvent = WooAnalyticsStat.twoFactorCodeRequested |
| 141 | + case .twoFactorSentSMS: |
| 142 | + wooEvent = WooAnalyticsStat.twoFactorSentSMS |
| 143 | + default: |
| 144 | + wooEvent = nil |
| 145 | + } |
| 146 | + |
| 147 | + return wooEvent |
| 148 | + } |
| 149 | +} |
0 commit comments