Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: Sign In Milestone 1 #1150

Merged
merged 78 commits into from
Jun 14, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
8482a00
Route directly to login with site address when login is clicked
AmandaRiu May 29, 2019
9db7ab3
Update site help image from wordpress-specific to more generic image
AmandaRiu May 29, 2019
3e93b87
Remove all mention of Jetpack
AmandaRiu May 29, 2019
8f573af
Add a way to hide the option to login by site address
AmandaRiu May 29, 2019
0d757d2
Route to the email login form after enter site address
AmandaRiu May 29, 2019
d8a0f33
Add new loginMode for woo and update related error strings
AmandaRiu May 30, 2019
5698ef5
Add debug property to populate site address during login
AmandaRiu May 31, 2019
dd221b8
Revert "Add new loginMode for woo and update related error strings"
AmandaRiu Jun 3, 2019
93f3e42
Update error messages to match signin milestone 1
AmandaRiu Jun 3, 2019
645531b
Add new string to handle non-WordPress site error
AmandaRiu Jun 3, 2019
3a7df62
Add new WOO_LOGIN_MODE
AmandaRiu Jun 3, 2019
9bda1b6
Add new logic to change the label to show the site logging into
AmandaRiu Jun 4, 2019
736a3c9
Add logic to get connected site info for woo login mode.
AmandaRiu Jun 4, 2019
3684f3b
Add basic Jetpack Required fragment
AmandaRiu Jun 4, 2019
906438a
Remove unnecessary TODO comment
AmandaRiu Jun 4, 2019
825a39d
Hide keyboard before displaying jetpack required screen
AmandaRiu Jun 4, 2019
f839da8
Move parameter to new line to fix lint error
AmandaRiu Jun 4, 2019
eeda8d3
Add what is jetpack strings and image assets
AmandaRiu Jun 4, 2019
5d79c77
Move Jetpack fragment to it's properly ui.login location
AmandaRiu Jun 4, 2019
4d0fecf
Update image asset for better flexibility
AmandaRiu Jun 4, 2019
825bb56
Add portrait and landscape layouts for What is jetpack dialog
AmandaRiu Jun 4, 2019
116f90a
Wire in What is Jetpack dialog
AmandaRiu Jun 4, 2019
a0b19dc
Move fragment to where it belongs in ui.login
AmandaRiu Jun 4, 2019
fe639d2
Remove silly comment for really obvious action
AmandaRiu Jun 4, 2019
50af9bd
Replace Chrome with more generic web browser verbiage
AmandaRiu Jun 4, 2019
d347c49
Special handling for atomic sites
AmandaRiu Jun 4, 2019
772781e
Merge pull request #1121 from woocommerce/amanda/sign-in-milestone-1
nbradbury Jun 4, 2019
d216897
Merge develop into feature branch
AmandaRiu Jun 4, 2019
d40c8a2
Update this branch with changes from feature branch
AmandaRiu Jun 4, 2019
188b386
Track connected site info requests, success, and failures
AmandaRiu Jun 4, 2019
ff031fb
Add tracks events for new views and buttons
AmandaRiu Jun 4, 2019
d450e24
Merge pull request #1125 from woocommerce/amanda/signin-whatis-jetpack
anitaa1990 Jun 5, 2019
88af186
Refresh branch with AndroidX changes in develop
AmandaRiu Jun 5, 2019
6a7ddd9
Temporarily store the login site address for use later
AmandaRiu Jun 6, 2019
2931773
Clean up unnecessary imports and unused variables
AmandaRiu Jun 6, 2019
6af8148
Save login url input to AppPrefs for use during the login process
AmandaRiu Jun 7, 2019
7630897
Add support for auto-loading app using login url
AmandaRiu Jun 7, 2019
56fc9aa
Start MainActivity with a clean slate when logging out
AmandaRiu Jun 7, 2019
b678131
Add new strings for login milestone 1
AmandaRiu Jun 7, 2019
4afa033
Add "try another account" button for new login flow
AmandaRiu Jun 7, 2019
0dea0c8
Process url login in the SitePicker
AmandaRiu Jun 7, 2019
39528fe
Update strings per design request
AmandaRiu Jun 7, 2019
901de16
Hide "show connected stores" button if no stores are available
AmandaRiu Jun 7, 2019
a0f95ce
Use store name in error message if available
AmandaRiu Jun 7, 2019
5758095
Remove default button style to fix issues with inheritance
AmandaRiu Jun 8, 2019
54d485a
Add "email help" button and dialog to login flow
AmandaRiu Jun 8, 2019
cdb2523
Add "need more help" listener to connected email dialog
AmandaRiu Jun 8, 2019
7d594df
ktlint error cleanup
AmandaRiu Jun 8, 2019
0a9ed67
Fix onConfigurationChange bug
AmandaRiu Jun 8, 2019
f6e3000
Add landscape versions of the site picker views
AmandaRiu Jun 8, 2019
1896923
Keep login URL in preferences to retain site picker state on restart
AmandaRiu Jun 8, 2019
e2175d8
Update the root of this view after all the changes made
AmandaRiu Jun 8, 2019
821a1be
Remove unused method. This gets cleared using the existing reset()
AmandaRiu Jun 8, 2019
8ca4fe7
Move method out of SelectedSite since it isn't directly related
AmandaRiu Jun 8, 2019
c293352
Revert "Remove unused method. This gets cleared using the existing re…
AmandaRiu Jun 8, 2019
44b26d3
Fix broken store switching functionality
AmandaRiu Jun 8, 2019
8a387dd
Keep toolbar visible when scrolling and prevent nested scrolling of s…
AmandaRiu Jun 8, 2019
2fdc53d
Fix lint error
AmandaRiu Jun 8, 2019
53db6e8
Fix failing app settings test
AmandaRiu Jun 8, 2019
519d188
Merge branch 'feature/signin-milestone-1' of https://github.com/wooco…
anitaa1990 Jun 10, 2019
6e6779b
Remove unnecessary null check
AmandaRiu Jun 10, 2019
75a19a7
Remove part of login site error msg and add help button
AmandaRiu Jun 10, 2019
f9f3313
Merge branch 'amanda/signin-has-woo' into amanda/signin-tracks-events
AmandaRiu Jun 10, 2019
4175cbe
Add new track events for login milestone 1
AmandaRiu Jun 11, 2019
76f18a3
Add Tracks events for Jetpack-related screen and dialog
AmandaRiu Jun 11, 2019
0af9adc
Add tracks events for login email helper dialog
AmandaRiu Jun 11, 2019
c7b46c2
Add tracks events for the site picker including auto-login events
AmandaRiu Jun 11, 2019
ca0dae3
Add tracks events for events related to the help finding email dialog
AmandaRiu Jun 11, 2019
e88bae1
Merge pull request #1135 from woocommerce/amanda/signin-has-woo
anitaa1990 Jun 13, 2019
98a8dfa
Add route to view instructions on how to install jetpack
AmandaRiu Jun 13, 2019
21e844b
Merge branch 'feature/signin-milestone-1' into amanda/signin-tracks-e…
AmandaRiu Jun 13, 2019
770c899
Merge pull request #1137 from woocommerce/amanda/signin-tracks-events
anitaa1990 Jun 13, 2019
8695a0a
Merge develop into this feature branch
AmandaRiu Jun 13, 2019
76362f0
Merge feature branch into this branch
AmandaRiu Jun 13, 2019
a56a140
Fix ktlint error by removing the unused import
AmandaRiu Jun 13, 2019
179b2a4
Merge pull request #1147 from woocommerce/amanda/signin-m1-support-link
nbradbury Jun 13, 2019
4f1b6af
Add signin milestone 1 to the release notes
AmandaRiu Jun 13, 2019
4ec2dde
Merge branch 'feature/signin-milestone-1' of https://github.com/wooco…
anitaa1990 Jun 14, 2019
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
7 changes: 7 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion RELEASE-NOTES.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
2.1
-----

* The sign in flow has been completely revamped with new help screens and documentation to help users successfully login to the app.

2.0
----
* Translations have been added for the "Orders to Fulfill" card in My Store.
Expand Down
13 changes: 12 additions & 1 deletion WooCommerce/src/main/kotlin/com/woocommerce/android/AppPrefs.kt
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ object AppPrefs {
IS_USING_V3_API,
HAS_UNSEEN_NOTIFS,
SELECTED_SHIPMENT_TRACKING_PROVIDER_NAME,
SELECTED_SHIPMENT_TRACKING_PROVIDER_IS_CUSTOM
SELECTED_SHIPMENT_TRACKING_PROVIDER_IS_CUSTOM,
LOGIN_SITE_ADDRESS
}

/**
Expand Down Expand Up @@ -142,6 +143,16 @@ object AppPrefs {
setBoolean(DeletablePrefKey.SELECTED_SHIPMENT_TRACKING_PROVIDER_IS_CUSTOM, isCustomProvider)
}

fun setLoginSiteAddress(loginSiteAddress: String) {
setString(DeletablePrefKey.LOGIN_SITE_ADDRESS, loginSiteAddress)
}

fun getLoginSiteAddress() = getString(DeletablePrefKey.LOGIN_SITE_ADDRESS)

fun removeLoginSiteAddress() {
remove(DeletablePrefKey.LOGIN_SITE_ADDRESS)
}

/**
* Remove all user-related preferences.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ class AnalyticsTracker private constructor(private val context: Context) {
LOGIN_AUTOFILL_CREDENTIALS_FILLED(siteless = true),
LOGIN_AUTOFILL_CREDENTIALS_UPDATED(siteless = true),
LOGIN_EMAIL_FORM_VIEWED(siteless = true),
LOGIN_BY_EMAIL_HELP_FINDING_CONNECTED_EMAIL_LINK_TAPPED(siteless = true),
LOGIN_MAGIC_LINK_OPEN_EMAIL_CLIENT_VIEWED(siteless = true),
LOGIN_MAGIC_LINK_OPEN_EMAIL_CLIENT_CLICKED(siteless = true),
LOGIN_MAGIC_LINK_REQUEST_FORM_VIEWED(siteless = true),
Expand Down Expand Up @@ -74,11 +75,31 @@ class AnalyticsTracker private constructor(private val context: Context) {
CREATED_ACCOUNT(siteless = true),
LOGIN_PROLOGUE_JETPACK_LOGIN_BUTTON_TAPPED(siteless = true),
LOGIN_PROLOGUE_JETPACK_CONFIGURATION_INSTRUCTIONS_LINK_TAPPED(siteless = true),
LOGIN_JETPACK_REQUIRED_SCREEN_VIEWED(siteless = true),
LOGIN_JETPACK_REQUIRED_VIEW_INSTRUCTIONS_BUTTON_TAPPED(siteless = true),
LOGIN_JETPACK_REQUIRED_CONTACT_SUPPORT_BUTTON_TAPPED(siteless = true),
LOGIN_JETPACK_REQUIRED_WHAT_IS_JETPACK_LINK_TAPPED(siteless = true),
LOGIN_JETPACK_REQUIRED_MENU_HELP_TAPPED(siteless = true),
LOGIN_WHAT_IS_JETPACK_HELP_SCREEN_VIEWED(siteless = true),
LOGIN_WHAT_IS_JETPACK_HELP_SCREEN_LEARN_MORE_BUTTON_TAPPED(siteless = true),
LOGIN_WHAT_IS_JETPACK_HELP_SCREEN_OK_BUTTON_TAPPED(siteless = true),
LOGIN_CONNECTED_SITE_INFO_REQUESTED(siteless = true),
LOGIN_CONNECTED_SITE_INFO_FAILED(siteless = true),
LOGIN_CONNECTED_SITE_INFO_SUCCEEDED(siteless = true),
LOGIN_FIND_CONNECTED_EMAIL_HELP_SCREEN_VIEWED(siteless = true),
LOGIN_FIND_CONNECTED_EMAIL_HELP_SCREEN_NEED_MORE_HELP_LINK_TAPPED(siteless = true),
LOGIN_FIND_CONNECTED_EMAIL_HELP_SCREEN_OK_BUTTON_TAPPED(siteless = true),

// -- Site Picker
SITE_PICKER_STORES_SHOWN(siteless = true),
SITE_PICKER_CONTINUE_TAPPED(siteless = true),
SITE_PICKER_HELP_BUTTON_TAPPED(siteless = true),
SITE_PICKER_AUTO_LOGIN_SUBMITTED(siteless = true),
SITE_PICKER_AUTO_LOGIN_ERROR_NOT_CONNECTED_TO_USER(siteless = true),
SITE_PICKER_AUTO_LOGIN_ERROR_NOT_WOO_STORE(siteless = true),
SITE_PICKER_TRY_ANOTHER_ACCOUNT_BUTTON_TAPPED(siteless = true),
SITE_PICKER_VIEW_CONNECTED_STORES_BUTTON_TAPPED(siteless = true),
SITE_PICKER_HELP_FINDING_CONNECTED_EMAIL_LINK_TAPPED(siteless = true),

// -- Dashboard
DASHBOARD_PULLED_TO_REFRESH,
Expand Down Expand Up @@ -370,6 +391,8 @@ class AnalyticsTracker private constructor(private val context: Context) {
const val KEY_CARRIER = "carrier"
const val KEY_OPTION = "option"
const val KEY_SOURCE = "source"
const val KEY_URL = "url"
const val KEY_HAS_CONNECTED_STORES = "has_connected_stores"

const val VALUE_ORDER = "order"
const val VALUE_REVIEW = "review"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,7 @@ class HelpActivity : AppCompatActivity() {
LOGIN_SOCIAL("origin:login-social"),
LOGIN_USERNAME_PASSWORD("origin:login-username-password"),
LOGIN_EPILOGUE("origin:login-epilogue"),
LOGIN_CONNECTED_EMAIL_HELP("origin:login-connected-email-help"),
SIGNUP_EMAIL("origin:signup-email"),
SIGNUP_MAGIC_LINK("origin:signup-magic-link");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,14 @@ import android.os.Bundle
import android.view.MenuItem
import androidx.appcompat.app.AppCompatActivity
import com.automattic.android.tracks.CrashLogging.CrashLogging
import androidx.fragment.app.Fragment
import com.woocommerce.android.AppPrefs
import com.woocommerce.android.ui.login.LoginJetpackRequiredFragment.LoginJetpackRequiredListener
import com.woocommerce.android.R
import com.woocommerce.android.analytics.AnalyticsTracker
import com.woocommerce.android.analytics.AnalyticsTracker.Stat
import com.woocommerce.android.support.HelpActivity
import com.woocommerce.android.support.HelpActivity.Origin
import com.woocommerce.android.support.SupportHelper
import com.woocommerce.android.support.ZendeskExtraTags
import com.woocommerce.android.support.ZendeskHelper
import com.woocommerce.android.ui.login.LoginPrologueFragment.PrologueFinishedListener
Expand Down Expand Up @@ -42,19 +45,18 @@ import java.util.ArrayList
import javax.inject.Inject

class LoginActivity : AppCompatActivity(), LoginListener, GoogleListener, PrologueFinishedListener,
HasSupportFragmentInjector {
HasSupportFragmentInjector, LoginJetpackRequiredListener, LoginEmailHelpDialogFragment.Listener {
companion object {
private const val FORGOT_PASSWORD_URL_SUFFIX = "wp-login.php?action=lostpassword"
}

@Inject internal lateinit var fragmentInjector: DispatchingAndroidInjector<androidx.fragment.app.Fragment>
@Inject internal lateinit var fragmentInjector: DispatchingAndroidInjector<Fragment>
@Inject internal lateinit var loginAnalyticsListener: LoginAnalyticsListener
@Inject internal lateinit var zendeskHelper: ZendeskHelper
@Inject lateinit var supportHelper: SupportHelper

private var loginMode: LoginMode? = null

override fun supportFragmentInjector(): AndroidInjector<androidx.fragment.app.Fragment> = fragmentInjector
override fun supportFragmentInjector(): AndroidInjector<Fragment> = fragmentInjector

override fun onCreate(savedInstanceState: Bundle?) {
AndroidInjection.inject(this)
Expand Down Expand Up @@ -82,11 +84,10 @@ class LoginActivity : AppCompatActivity(), LoginListener, GoogleListener, Prolog
}

override fun onPrologueFinished() {
// TODO Check loginMode here and handle different login cases
startLogin()
}

private fun slideInFragment(fragment: androidx.fragment.app.Fragment, shouldAddToBackStack: Boolean, tag: String) {
private fun slideInFragment(fragment: Fragment, shouldAddToBackStack: Boolean, tag: String) {
val fragmentTransaction = supportFragmentManager.beginTransaction()
fragmentTransaction.setCustomAnimations(
R.anim.activity_slide_in_from_right,
Expand All @@ -105,6 +106,9 @@ class LoginActivity : AppCompatActivity(), LoginListener, GoogleListener, Prolog
return if (fragment == null) null else fragment as LoginEmailFragment
}

private fun getLoginViaSiteAddressFragment(): LoginSiteAddressFragment? =
supportFragmentManager.findFragmentByTag(LoginSiteAddressFragment.TAG) as? LoginSiteAddressFragment

override fun onOptionsItemSelected(item: MenuItem): Boolean {
if (item.itemId == android.R.id.home) {
onBackPressed()
Expand Down Expand Up @@ -152,12 +156,12 @@ class LoginActivity : AppCompatActivity(), LoginListener, GoogleListener, Prolog
}

private fun startLogin() {
if (getLoginEmailFragment() != null) {
// email screen is already shown so, login has already started. Just bail.
if (getLoginViaSiteAddressFragment() != null) {
// login by site address is already shown so, login has already started. Just bail.
return
}

slideInFragment(LoginEmailFragment(), true, LoginEmailFragment.TAG)
loginViaSiteAddress()
}

// -- BEGIN: LoginListener implementation methods
Expand Down Expand Up @@ -259,12 +263,37 @@ class LoginActivity : AppCompatActivity(), LoginListener, GoogleListener, Prolog
}

override fun gotWpcomSiteInfo(siteAddress: String?, siteName: String?, siteIconUrl: String?) {
val loginUsernamePasswordFragment = LoginUsernamePasswordFragment.newInstance(
siteAddress, siteAddress, siteName, siteIconUrl, null, null, true)
slideInFragment(loginUsernamePasswordFragment, true, LoginUsernamePasswordFragment.TAG)
// Save site address to app prefs so it's available to MainActivity regardless of how the user
// logs into the app.
siteAddress?.let { AppPrefs.setLoginSiteAddress(it) }

val loginEmailFragment = getLoginEmailFragment() ?: LoginEmailFragment.newInstance(true, siteAddress)
slideInFragment(loginEmailFragment as Fragment, true, LoginEmailFragment.TAG)
}

override fun gotConnectedSiteInfo(siteAddress: String, hasJetpack: Boolean) {
// Save site address to app prefs so it's available to MainActivity regardless of how the user
// logs into the app.
AppPrefs.setLoginSiteAddress(siteAddress)

if (hasJetpack) {
val loginEmailFragment = getLoginEmailFragment() ?: LoginEmailFragment.newInstance(true, siteAddress)
slideInFragment(loginEmailFragment as Fragment, true, LoginEmailFragment.TAG)
} else {
// hide the keyboard
org.wordpress.android.util.ActivityUtils.hideKeyboard(this)

// Show the 'Jetpack required' fragment
val jetpackReqFragment = LoginJetpackRequiredFragment.newInstance(siteAddress)
slideInFragment(jetpackReqFragment as Fragment, true, LoginJetpackRequiredFragment.TAG)
}
}

override fun gotXmlRpcEndpoint(inputSiteAddress: String?, endpointAddress: String?) {
// Save site address to app prefs so it's available to MainActivity regardless of how the user
// logs into the app.
inputSiteAddress?.let { AppPrefs.setLoginSiteAddress(it) }

val loginUsernamePasswordFragment = LoginUsernamePasswordFragment.newInstance(
inputSiteAddress, endpointAddress, null, null, null, null, false)
slideInFragment(loginUsernamePasswordFragment, true, LoginUsernamePasswordFragment.TAG)
Expand Down Expand Up @@ -392,4 +421,22 @@ class LoginActivity : AppCompatActivity(), LoginListener, GoogleListener, Prolog
}

// -- END: GoogleListener implementation methods

override fun showJetpackInstructions() {
ChromeCustomTabUtils.launchUrl(this, getString(R.string.jetpack_view_instructions_link))
}

override fun showWhatIsJetpackDialog() {
LoginWhatIsJetpackDialogFragment().show(supportFragmentManager, LoginWhatIsJetpackDialogFragment.TAG)
}

override fun showHelpFindingConnectedEmail() {
AnalyticsTracker.track(Stat.LOGIN_BY_EMAIL_HELP_FINDING_CONNECTED_EMAIL_LINK_TAPPED)

LoginEmailHelpDialogFragment().show(supportFragmentManager, LoginEmailHelpDialogFragment.TAG)
}

override fun onEmailNeedMoreHelpClicked() {
startActivity(HelpActivity.createIntent(this, Origin.LOGIN_CONNECTED_EMAIL_HELP, null))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -194,4 +194,27 @@ class LoginAnalyticsTracker : LoginAnalyticsListener {
override fun trackWpComBackgroundServiceUpdate(properties: Map<String, *>) {
AnalyticsTracker.track(AnalyticsTracker.Stat.LOGIN_WPCOM_BACKGROUND_SERVICE_UPDATE, properties)
}

override fun trackConnectedSiteInfoRequested(url: String?) {
AnalyticsTracker.track(
AnalyticsTracker.Stat.LOGIN_CONNECTED_SITE_INFO_REQUESTED,
mapOf(AnalyticsTracker.KEY_URL to url))
}

override fun trackConnectedSiteInfoFailed(
url: String?,
errorContext: String?,
errorType: String?,
errorDescription: String?
) {
AnalyticsTracker.track(
AnalyticsTracker.Stat.LOGIN_CONNECTED_SITE_INFO_FAILED,
errorContext,
errorType,
errorDescription)
}

override fun trackConnectedSiteInfoSucceeded(properties: Map<String, *>) {
AnalyticsTracker.track(AnalyticsTracker.Stat.LOGIN_CONNECTED_SITE_INFO_SUCCEEDED, properties)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package com.woocommerce.android.ui.login

import android.app.Dialog
import android.content.Context
import android.os.Bundle
import android.text.Html
import android.view.ContextThemeWrapper
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment
import com.woocommerce.android.R
import com.woocommerce.android.R.style
import com.woocommerce.android.analytics.AnalyticsTracker
import com.woocommerce.android.analytics.AnalyticsTracker.Stat

class LoginEmailHelpDialogFragment : DialogFragment() {
companion object {
const val TAG = "LoginEmailHelpDialogFragment"
}

interface Listener {
fun onEmailNeedMoreHelpClicked()
}

private var listener: Listener? = null

override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
dialog?.window?.attributes?.windowAnimations = R.style.Woo_Dialog_Login_EmailHelp
}

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val message = Html.fromHtml(getString(R.string.login_email_help_desc, "<b>", "</b>", "<b>", "</b>"))

return AlertDialog.Builder(ContextThemeWrapper(activity, style.Woo_Dialog))
.setTitle(R.string.login_email_help_title)
.setMessage(message)
.setNeutralButton(R.string.login_site_address_more_help) { dialog, _ ->
AnalyticsTracker.track(Stat.LOGIN_FIND_CONNECTED_EMAIL_HELP_SCREEN_NEED_MORE_HELP_LINK_TAPPED)

listener?.onEmailNeedMoreHelpClicked()
dialog.dismiss()
}
.setPositiveButton(android.R.string.ok) { dialog, _ ->
AnalyticsTracker.track(Stat.LOGIN_FIND_CONNECTED_EMAIL_HELP_SCREEN_OK_BUTTON_TAPPED)

dialog.dismiss()
}
.setCancelable(true)
.create()
}

override fun onAttach(context: Context?) {
super.onAttach(context)

if (context is Listener) {
listener = context
}
}

override fun onResume() {
super.onResume()
AnalyticsTracker.track(Stat.LOGIN_FIND_CONNECTED_EMAIL_HELP_SCREEN_VIEWED)
}
}
Loading