summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-04-29 16:22:34 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-04-30 16:26:23 +0000
commit882423e3c8de73141ec7cadaf45e2f52f9ee5354 (patch)
treeccbae007d8c50a3cf156f6bf2b5e2d3c2a515714 /android/src
parent224a64e32cf62c2c56d40b990c8401761bbe98cc (diff)
downloadmullvadvpn-882423e3c8de73141ec7cadaf45e2f52f9ee5354.tar.xz
mullvadvpn-882423e3c8de73141ec7cadaf45e2f52f9ee5354.zip
Advance to Connect screen when payment is detected
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WelcomeFragment.kt34
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()
+ }
+ }
}