diff options
| author | Albin <albin@mullvad.net> | 2022-06-15 13:35:21 +0200 |
|---|---|---|
| committer | Albin <albin@mullvad.net> | 2022-06-22 11:57:30 +0200 |
| commit | 57c9732ccc5fe52f77032089867902870e83004e (patch) | |
| tree | 557e92a2e1d88a7ff6e0016df5919b9d86072c32 /android | |
| parent | 7a2ca30772c10cfdf4ecd35ed6c3bfa2c240b9aa (diff) | |
| download | mullvadvpn-57c9732ccc5fe52f77032089867902870e83004e.tar.xz mullvadvpn-57c9732ccc5fe52f77032089867902870e83004e.zip | |
Enable auto-login by setting account token argument
Diffstat (limited to 'android')
5 files changed, 22 insertions, 1 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 3b0b78d9a2..51b31635cf 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 @@ -15,6 +15,7 @@ import androidx.lifecycle.repeatOnLifecycle import kotlinx.coroutines.flow.collect import kotlinx.coroutines.launch import net.mullvad.mullvadvpn.R +import net.mullvad.mullvadvpn.ui.fragments.ACCOUNT_TOKEN_ARGUMENT_KEY import net.mullvad.mullvadvpn.ui.widget.AccountLogin import net.mullvad.mullvadvpn.ui.widget.HeaderBar import net.mullvad.mullvadvpn.viewmodel.LoginViewModel @@ -46,6 +47,7 @@ class LoginFragment : container: ViewGroup?, savedInstanceState: Bundle? ): View { + loginViewModel.reset() // TODO: Keep? val view = inflater.inflate(R.layout.login, container, false) headerBar = view.findViewById(R.id.header_bar) @@ -71,6 +73,8 @@ class LoginFragment : scrollToShow(accountLogin) + triggerAutoLoginIfAccountTokenPresent() + return view } @@ -94,6 +98,13 @@ class LoginFragment : parentActivity.backButtonHandler = null } + private fun triggerAutoLoginIfAccountTokenPresent() { + arguments?.getString(ACCOUNT_TOKEN_ARGUMENT_KEY)?.also { accountToken -> + accountLogin.setAccountToken(accountToken) + loginViewModel.login(accountToken) + } + } + private fun setupLifecycleSubscriptionsToViewModel() { lifecycleScope.launch { repeatOnLifecycle(Lifecycle.State.RESUMED) { diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragments/FragmentArgumentConstant.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragments/FragmentArgumentConstant.kt new file mode 100644 index 0000000000..e6ba0c7c3b --- /dev/null +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragments/FragmentArgumentConstant.kt @@ -0,0 +1,3 @@ +package net.mullvad.mullvadvpn.ui.fragments + +const val ACCOUNT_TOKEN_ARGUMENT_KEY = "accountToken" 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 970e9e9d0a..1a496933a4 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 @@ -45,7 +45,7 @@ class AccountInput : LinearLayout { } } - private val input = container.findViewById<EditText>(R.id.login_input).apply { + val input = container.findViewById<EditText>(R.id.login_input).apply { addTextChangedListener(inputWatcher) setOnEnterOrDoneAction(::login) 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 d18d8f5b39..f3eca196f2 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 @@ -23,6 +23,8 @@ class AccountLogin : RelativeLayout { private val MAX_ACCOUNT_HISTORY_ENTRIES = 3 } + fun setAccountToken(accountToken: String) { input.input.setText(accountToken) } + private val focusDebouncer = Debouncer(false).apply { listener = { hasFocus -> focused = hasFocus } } diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModel.kt index 8ca0a2cde5..84e794df6e 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModel.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModel.kt @@ -66,6 +66,11 @@ class LoginViewModel( data class OtherError(val errorMessage: String) : LoginUiState() } + // TODO: Required? + fun reset() { + _uiState.value = LoginUiState.Default + } + fun clearAccountHistory() { accountCache.tryPerformAction( errorMessageIfAccountCacheNotAvailable = SERVICE_NOT_CONNECTED_ERROR_MESSAGE |
