diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-05-09 14:47:26 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-05-12 17:32:46 +0000 |
| commit | 2f898ef4cc48d8142d8985205e238a641aab8f8f (patch) | |
| tree | 4729f22a3ddd7b945b40773d745ba1681d6e97b2 /android | |
| parent | 4c425bec2dbf3a9ba669a408c605beff832ce54f (diff) | |
| download | mullvadvpn-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.kt | 43 |
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 + } + } + } } |
