summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/NotificationBanner.kt25
-rw-r--r--android/src/main/res/values/strings.xml10
2 files changed, 31 insertions, 4 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/NotificationBanner.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/NotificationBanner.kt
index 7b6309d9d7..6a56d7c3e3 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/NotificationBanner.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/NotificationBanner.kt
@@ -4,6 +4,7 @@ import android.widget.TextView
import android.view.View
import net.mullvad.mullvadvpn.model.ActionAfterDisconnect
+import net.mullvad.mullvadvpn.model.BlockReason
import net.mullvad.mullvadvpn.model.KeygenEvent
import net.mullvad.mullvadvpn.model.TunnelState
@@ -48,19 +49,35 @@ class NotificationBanner(val parentView: View) {
is TunnelState.Disconnecting -> {
when (state.actionAfterDisconnect) {
is ActionAfterDisconnect.Nothing -> hide()
- is ActionAfterDisconnect.Block -> show(R.string.blocking_internet, null)
- is ActionAfterDisconnect.Reconnect -> show(R.string.blocking_internet, null)
+ is ActionAfterDisconnect.Block -> showBlocking(null)
+ is ActionAfterDisconnect.Reconnect -> showBlocking(null)
}
}
is TunnelState.Disconnected -> hide()
- is TunnelState.Connecting -> show(R.string.blocking_internet, null)
+ is TunnelState.Connecting -> showBlocking(null)
is TunnelState.Connected -> hide()
- is TunnelState.Blocked -> show(R.string.blocking_internet, null)
+ is TunnelState.Blocked -> showBlocking(state.reason)
}
return true
}
+ private fun showBlocking(reason: BlockReason?) {
+ val messageText = when (reason) {
+ null -> null
+ is BlockReason.AuthFailed -> R.string.auth_failed
+ is BlockReason.Ipv6Unavailable -> R.string.ipv6_unavailable
+ is BlockReason.SetFirewallPolicyError -> R.string.set_firewall_policy_error
+ is BlockReason.SetDnsError -> R.string.set_dns_error
+ is BlockReason.StartTunnelError -> R.string.start_tunnel_error
+ is BlockReason.NoMatchingRelay -> R.string.no_matching_relay
+ is BlockReason.IsOffline -> R.string.is_offline
+ is BlockReason.TapAdapterProblem -> R.string.tap_adapter_problem
+ }
+
+ show(R.string.blocking_internet, messageText)
+ }
+
private fun show(titleText: Int, messageText: Int?) {
if (!visible) {
visible = true
diff --git a/android/src/main/res/values/strings.xml b/android/src/main/res/values/strings.xml
index 0ca628f401..20e8a5635d 100644
--- a/android/src/main/res/values/strings.xml
+++ b/android/src/main/res/values/strings.xml
@@ -61,6 +61,16 @@
<string name="switch_location">Switch location</string>
<string name="blocking_internet">Blocking internet</string>
+ <string name="auth_failed">Account authentication failed.</string>
+ <string name="ipv6_unavailable">Could not configure IPv6</string>
+ <string name="set_firewall_policy_error">
+ Failed to apply firewall rules. The device might currently be unsecured
+ </string>
+ <string name="set_dns_error">Failed to set system DNS server</string>
+ <string name="start_tunnel_error">Failed to start tunnel connection</string>
+ <string name="no_matching_relay">No relay server matches the current settings</string>
+ <string name="is_offline">This device is offline, no tunnels can be established</string>
+ <string name="tap_adapter_problem">TAP adapter error</string>
<string name="too_many_keys">Too many WireGuard keys registered to account</string>
<string name="failed_to_generate_key">Failed to generate WireGuard key</string>