summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
Diffstat (limited to 'android')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectActionButton.kt24
1 files changed, 21 insertions, 3 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectActionButton.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectActionButton.kt
index dc427a5ac5..5e1d50887b 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectActionButton.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectActionButton.kt
@@ -46,7 +46,13 @@ class ConnectActionButton(val parentView: View) {
}
is TunnelState.Connecting -> connecting()
is TunnelState.Connected -> connected()
- is TunnelState.Error -> connected()
+ is TunnelState.Error -> {
+ if (value.errorState.isBlocking) {
+ connected()
+ } else {
+ blockError()
+ }
+ }
}
field = value
@@ -74,12 +80,20 @@ class ConnectActionButton(val parentView: View) {
}
private fun action() {
- when (tunnelState) {
+ val state = tunnelState
+
+ when (state) {
is TunnelState.Disconnected -> onConnect?.invoke()
is TunnelState.Disconnecting -> onConnect?.invoke()
is TunnelState.Connecting -> onCancel?.invoke()
is TunnelState.Connected -> onDisconnect?.invoke()
- is TunnelState.Error -> onDisconnect?.invoke()
+ is TunnelState.Error -> {
+ if (state.errorState.isBlocking) {
+ onDisconnect?.invoke()
+ } else {
+ onCancel?.invoke()
+ }
+ }
}
}
@@ -97,6 +111,10 @@ class ConnectActionButton(val parentView: View) {
redButton(R.string.disconnect)
}
+ private fun blockError() {
+ redButton(R.string.dismiss)
+ }
+
private fun redButton(text: Int) {
mainButton.background = leftRedBackground
mainButton.setText(text)