diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-05-08 22:12:00 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-05-12 17:32:45 +0000 |
| commit | 410671b838e861c98334da1350696be0409b66b4 (patch) | |
| tree | 9c9895a2505346cfa367c426c4e83fe7115ea461 /android | |
| parent | cecbee01d0184b14c940f46b1fefbe8b59485073 (diff) | |
| download | mullvadvpn-410671b838e861c98334da1350696be0409b66b4.tar.xz mullvadvpn-410671b838e861c98334da1350696be0409b66b4.zip | |
Open Out Of Time screen from the Login screen
Diffstat (limited to 'android')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/AccountCache.kt | 6 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt | 32 |
2 files changed, 28 insertions, 10 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/AccountCache.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/AccountCache.kt index c11bf2d770..07fa7911fc 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/AccountCache.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/AccountCache.kt @@ -5,9 +5,11 @@ import net.mullvad.mullvadvpn.util.JobTracker import org.joda.time.DateTime import org.joda.time.format.DateTimeFormat -val EXPIRY_FORMAT = DateTimeFormat.forPattern("YYYY-MM-dd HH:mm:ss z") - class AccountCache(val daemon: MullvadDaemon, val settingsListener: SettingsListener) { + companion object { + public val EXPIRY_FORMAT = DateTimeFormat.forPattern("YYYY-MM-dd HH:mm:ss z") + } + private val jobTracker = JobTracker() private val subscriptionId = settingsListener.accountNumberNotifier.subscribe { accountNumber -> handleNewAccountNumber(accountNumber) diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt index 959431b85a..d59393f2a1 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt @@ -13,12 +13,15 @@ import kotlinx.coroutines.delay import kotlinx.coroutines.launch import net.mullvad.mullvadvpn.R import net.mullvad.mullvadvpn.model.GetAccountDataResult +import net.mullvad.mullvadvpn.service.AccountCache import net.mullvad.mullvadvpn.ui.widget.Button import net.mullvad.mullvadvpn.util.JobTracker +import org.joda.time.DateTime class LoginFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) { enum class LoginResult { - ExistingAccount, + ExistingAccountWithTime, + ExistingAccountOutOfTime, NewAccount; } @@ -61,7 +64,8 @@ class LoginFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) { override fun onSafelyResume() { jobTracker.newUiJob("advanceToNextScreen") { when (loggedIn.await()) { - LoginResult.ExistingAccount -> openNextScreen(ConnectFragment()) + LoginResult.ExistingAccountWithTime -> openNextScreen(ConnectFragment()) + LoginResult.ExistingAccountOutOfTime -> openNextScreen(OutOfTimeFragment()) LoginResult.NewAccount -> openNextScreen(WelcomeFragment()) } } @@ -121,20 +125,32 @@ class LoginFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) { private fun performLogin(accountToken: String) = GlobalScope.launch(Dispatchers.Main) { jobTracker.newUiJob("login") { - val loginSucceeded = jobTracker.runOnBackground { + val loginResult = jobTracker.runOnBackground { val accountDataResult = daemon.getAccountData(accountToken) when (accountDataResult) { - is GetAccountDataResult.Ok, is GetAccountDataResult.RpcError -> { + is GetAccountDataResult.Ok -> { daemon.setAccount(accountToken) - true + + val expiryString = accountDataResult.accountData.expiry + val expiry = DateTime.parse(expiryString, AccountCache.EXPIRY_FORMAT) + + if (expiry.isAfterNow()) { + LoginResult.ExistingAccountWithTime + } else { + LoginResult.ExistingAccountOutOfTime + } + } + is GetAccountDataResult.RpcError -> { + daemon.setAccount(accountToken) + LoginResult.ExistingAccountWithTime } - else -> false + else -> null } } - if (loginSucceeded) { - loggedIn("", LoginResult.ExistingAccount) + if (loginResult != null) { + loggedIn("", loginResult) } else { loginFailure(R.string.login_fail_description) } |
