summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorAlbin <albin@mullvad.net>2022-06-15 13:35:21 +0200
committerAlbin <albin@mullvad.net>2022-06-22 11:57:30 +0200
commit57c9732ccc5fe52f77032089867902870e83004e (patch)
tree557e92a2e1d88a7ff6e0016df5919b9d86072c32 /android
parent7a2ca30772c10cfdf4ecd35ed6c3bfa2c240b9aa (diff)
downloadmullvadvpn-57c9732ccc5fe52f77032089867902870e83004e.tar.xz
mullvadvpn-57c9732ccc5fe52f77032089867902870e83004e.zip
Enable auto-login by setting account token argument
Diffstat (limited to 'android')
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt11
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/fragments/FragmentArgumentConstant.kt3
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountInput.kt2
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountLogin.kt2
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/LoginViewModel.kt5
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