diff options
Diffstat (limited to 'android/app')
5 files changed, 38 insertions, 10 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt index 1503052c93..424872bf43 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt @@ -138,6 +138,7 @@ class LoginFragment : BaseFragment(), NavigationBarPainter { is LoginViewModel.LoginUiState.Success -> { // MainActivity responsible for transition to connect/out-of-time view. + showLoggedIn() } is LoginViewModel.LoginUiState.AccountCreated -> { @@ -215,6 +216,19 @@ class LoginFragment : BaseFragment(), NavigationBarPainter { scrollToShow(loggingInStatus) } + private fun showLoggedIn() { + title.setText(R.string.logged_in_title) + subtitle.setText(R.string.logged_in_description) + + loggingInStatus.visibility = View.GONE + loginFailStatus.visibility = View.GONE + loggedInStatus.visibility = View.VISIBLE + + accountLogin.state = LoginState.Success + + scrollToShow(loggedInStatus) + } + private fun showCreatingAccount() { title.setText(R.string.logging_in_title) subtitle.setText(R.string.creating_new_account) diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt index ec31a4c706..d3effa5a93 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt @@ -15,6 +15,7 @@ import androidx.fragment.app.FragmentManager import androidx.lifecycle.Lifecycle import androidx.lifecycle.flowWithLifecycle import androidx.lifecycle.lifecycleScope +import kotlinx.coroutines.delay import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.debounce import kotlinx.coroutines.launch @@ -171,7 +172,10 @@ open class MainActivity : FragmentActivity() { is DeviceState.LoggedOut -> openLoginView() is DeviceState.Revoked -> openRevokedView() is DeviceState.LoggedIn -> { - openLoggedInView(newState.accountAndDevice.account_token) + openLoggedInView( + accountToken = newState.accountAndDevice.account_token, + shouldDelayLogin = currentState is DeviceState.LoggedOut + ) } } currentState = newState @@ -194,12 +198,17 @@ open class MainActivity : FragmentActivity() { } } - private fun openLoggedInView(accountToken: String) { + private suspend fun openLoggedInView(accountToken: String, shouldDelayLogin: Boolean) { val isNewAccount = accountToken == accountRepository.cachedCreatedAccount.value val fragment = when { isNewAccount -> WelcomeFragment() - else -> ConnectFragment() + else -> { + if (shouldDelayLogin) { + delay(LOGIN_DELAY_MILLIS) + } + ConnectFragment() + } } supportFragmentManager.beginTransaction().apply { @@ -237,4 +246,8 @@ open class MainActivity : FragmentActivity() { } } } + + companion object { + private const val LOGIN_DELAY_MILLIS = 1000L + } } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountInput.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountInput.kt index 1a496933a4..38b42ca351 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountInput.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountInput.kt @@ -131,10 +131,15 @@ class AccountInput : LinearLayout { } private fun successState() { + input.apply { + setTextColor(disabledTextColor) + setEnabled(false) + setFocusable(false) + visibility = View.VISIBLE + } + button.visibility = View.GONE setButtonEnabled(false) - - input.visibility = View.GONE } private fun failureState() { diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountLogin.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountLogin.kt index f3eca196f2..c204445168 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountLogin.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountLogin.kt @@ -5,7 +5,6 @@ import android.app.Activity import android.content.Context import android.util.AttributeSet import android.view.LayoutInflater -import android.view.View import android.view.View.OnLayoutChangeListener import android.view.inputmethod.InputMethodManager import android.widget.RelativeLayout @@ -114,10 +113,6 @@ class AccountLogin : RelativeLayout { input.loginState = newState updateBorder() - - if (newState == LoginState.Success) { - visibility = View.INVISIBLE - } } var onLogin: ((String) -> Unit)? diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 29495c80e2..70cccd341e 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -18,6 +18,7 @@ <string name="logging_in_title">Logging in...</string> <string name="logging_in_description">Checking account number</string> <string name="logged_in_title">Logged in</string> + <string name="logged_in_description">Valid account number</string> <string name="login_fail_title">Login failed</string> <string name="login_fail_description">Invalid account number</string> <string name="dont_have_an_account">Don\'t have an account number?</string> |
