summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-07-21 22:46:19 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-07-23 18:02:34 +0000
commit170f469a3fff911a591f881c0c935dfe485a63ec (patch)
treefc84b9f276234df325fc772359063561d058168c /android/src
parent7ed2c0b18432444308c12632442724c42e876605 (diff)
downloadmullvadvpn-170f469a3fff911a591f881c0c935dfe485a63ec.tar.xz
mullvadvpn-170f469a3fff911a591f881c0c935dfe485a63ec.zip
Update `NotificationBanner` based on key status
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/NotificationBanner.kt38
1 files changed, 31 insertions, 7 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/NotificationBanner.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/NotificationBanner.kt
index c0d7f03d26..32fbf6dd26 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/NotificationBanner.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/NotificationBanner.kt
@@ -2,12 +2,19 @@ package net.mullvad.mullvadvpn
import android.view.View
+import net.mullvad.mullvadvpn.model.KeygenEvent
import net.mullvad.mullvadvpn.model.TunnelState
class NotificationBanner(val parentView: View) {
private val banner: View = parentView.findViewById(R.id.notification_banner)
private var visible = false
+ var keyState: KeygenEvent? = null
+ set(value) {
+ field = value
+ update()
+ }
+
var tunnelState: TunnelState = TunnelState.Disconnected()
set(value) {
field = value
@@ -16,14 +23,31 @@ class NotificationBanner(val parentView: View) {
private fun update() {
synchronized(this) {
- when (tunnelState) {
- is TunnelState.Disconnecting -> hide()
- is TunnelState.Disconnected -> hide()
- is TunnelState.Connecting -> show()
- is TunnelState.Connected -> hide()
- is TunnelState.Blocked -> show()
- }
+ updateBasedOnKeyState() || updateBasedOnTunnelState()
+ }
+ }
+
+ private fun updateBasedOnKeyState(): Boolean {
+ when (keyState) {
+ null -> return false
+ is KeygenEvent.NewKey -> return false
+ is KeygenEvent.TooManyKeys -> show()
+ is KeygenEvent.GenerationFailure -> show()
}
+
+ return true
+ }
+
+ private fun updateBasedOnTunnelState(): Boolean {
+ when (tunnelState) {
+ is TunnelState.Disconnecting -> hide()
+ is TunnelState.Disconnected -> hide()
+ is TunnelState.Connecting -> show()
+ is TunnelState.Connected -> hide()
+ is TunnelState.Blocked -> show()
+ }
+
+ return true
}
private fun show() {