summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-05-09 14:47:26 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-05-12 17:32:46 +0000
commit2f898ef4cc48d8142d8985205e238a641aab8f8f (patch)
tree4729f22a3ddd7b945b40773d745ba1681d6e97b2 /android
parent4c425bec2dbf3a9ba669a408c605beff832ce54f (diff)
downloadmullvadvpn-2f898ef4cc48d8142d8985205e238a641aab8f8f.tar.xz
mullvadvpn-2f898ef4cc48d8142d8985205e238a641aab8f8f.zip
Hide disconnect button when already disconnected
Diffstat (limited to 'android')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/OutOfTimeFragment.kt43
1 files changed, 43 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/OutOfTimeFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/OutOfTimeFragment.kt
index 2d6569d488..fd39203e46 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/OutOfTimeFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/OutOfTimeFragment.kt
@@ -5,15 +5,25 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import net.mullvad.mullvadvpn.R
+import net.mullvad.mullvadvpn.model.TunnelState
import net.mullvad.mullvadvpn.ui.widget.Button
import net.mullvad.mullvadvpn.ui.widget.UrlButton
import net.mullvad.mullvadvpn.util.JobTracker
+import net.mullvad.talpid.tunnel.ActionAfterDisconnect
class OutOfTimeFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) {
private val jobTracker = JobTracker()
private lateinit var disconnectButton: Button
+ private var tunnelStateListener: Int? = null
+
+ private var tunnelState: TunnelState = TunnelState.Disconnected()
+ set(value) {
+ field = value
+ updateDisconnectButton()
+ }
+
override fun onSafelyCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
@@ -41,11 +51,21 @@ class OutOfTimeFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen)
}
}
+ tunnelStateListener = connectionProxy.onStateChange.subscribe() { newState ->
+ jobTracker.newUiJob("updateTunnelState") {
+ tunnelState = newState
+ }
+ }
+
return view
}
override fun onSafelyDestroyView() {
jobTracker.cancelAllJobs()
+
+ tunnelStateListener?.let { id ->
+ connectionProxy.onStateChange.unsubscribe(id)
+ }
}
private fun showRedeemVoucherDialog() {
@@ -55,4 +75,27 @@ class OutOfTimeFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen)
RedeemVoucherDialogFragment().show(transaction, null)
}
+
+ private fun updateDisconnectButton() {
+ val state = tunnelState
+
+ val showButton = when (state) {
+ is TunnelState.Disconnected -> false
+ is TunnelState.Connecting, is TunnelState.Connected -> true
+ is TunnelState.Disconnecting -> {
+ state.actionAfterDisconnect != ActionAfterDisconnect.Nothing
+ }
+ is TunnelState.Error -> state.errorState.isBlocking
+ }
+
+ disconnectButton.apply {
+ if (showButton) {
+ setEnabled(true)
+ visibility = View.VISIBLE
+ } else {
+ setEnabled(false)
+ visibility = View.GONE
+ }
+ }
+ }
}