diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-04-29 16:22:34 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-04-30 16:26:23 +0000 |
| commit | 882423e3c8de73141ec7cadaf45e2f52f9ee5354 (patch) | |
| tree | ccbae007d8c50a3cf156f6bf2b5e2d3c2a515714 /android | |
| parent | 224a64e32cf62c2c56d40b990c8401761bbe98cc (diff) | |
| download | mullvadvpn-882423e3c8de73141ec7cadaf45e2f52f9ee5354.tar.xz mullvadvpn-882423e3c8de73141ec7cadaf45e2f52f9ee5354.zip | |
Advance to Connect screen when payment is detected
Diffstat (limited to 'android')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WelcomeFragment.kt | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WelcomeFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WelcomeFragment.kt index 3d66abb45f..5fcf67f568 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WelcomeFragment.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WelcomeFragment.kt @@ -5,9 +5,13 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView +import kotlinx.coroutines.delay import net.mullvad.mullvadvpn.R import net.mullvad.mullvadvpn.ui.widget.UrlButton import net.mullvad.mullvadvpn.util.JobTracker +import org.joda.time.DateTime + +val POLL_INTERVAL: Long = 15 /* s */ * 1000 /* ms */ class WelcomeFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) { private val jobTracker = JobTracker() @@ -35,11 +39,22 @@ class WelcomeFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) { } override fun onSafelyResume() { - accountCache.onAccountDataChange = { account, _ -> updateAccountNumber(account) } + accountCache.onAccountDataChange = { account, expiry -> + updateAccountNumber(account) + checkExpiry(expiry) + } + + jobTracker.newBackgroundJob("pollAccountData") { + while (true) { + accountCache.refetch() + delay(POLL_INTERVAL) + } + } } override fun onSafelyPause() { accountCache.onAccountDataChange = null + jobTracker.cancelJob("pollAccountData") } override fun onSafelyDestroyView() { @@ -74,4 +89,21 @@ class WelcomeFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) { return parts.joinToString(" ") } } + + private fun checkExpiry(maybeExpiry: DateTime?) { + maybeExpiry?.let { expiry -> + if (expiry.isAfterNow()) { + jobTracker.newUiJob("advanceToConnectScreen") { + advanceToConnectScreen() + } + } + } + } + + private fun advanceToConnectScreen() { + fragmentManager?.beginTransaction()?.apply { + replace(R.id.main_fragment, ConnectFragment()) + commit() + } + } } |
