diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-07-31 11:28:37 -0300 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-07-31 11:28:37 -0300 |
| commit | 4bb7784e0bdac6ca641d8ab16e29e82aaec6fc21 (patch) | |
| tree | 65c5a4d2a139fc7b4d37ccbb5cc961716ede3aea /android/src/main/kotlin | |
| parent | 5c1cc92f024380712f62b4d69fc3468b3e73a00e (diff) | |
| parent | 8a7f10fe8c8001c60a4630f12970ee442d749e77 (diff) | |
| download | mullvadvpn-4bb7784e0bdac6ca641d8ab16e29e82aaec6fc21.tar.xz mullvadvpn-4bb7784e0bdac6ca641d8ab16e29e82aaec6fc21.zip | |
Merge branch 'improve-wireguard-error-notifications'
Diffstat (limited to 'android/src/main/kotlin')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt | 2 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/NotificationBanner.kt | 39 |
2 files changed, 37 insertions, 4 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt index a5f14cfa92..62a9765cce 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt @@ -59,7 +59,7 @@ class ConnectFragment : Fragment() { } headerBar = HeaderBar(view, context!!) - notificationBanner = NotificationBanner(view) + notificationBanner = NotificationBanner(view, context!!) status = ConnectionStatus(view, context!!) locationInfo = LocationInfo(view, locationInfoCache) diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/NotificationBanner.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/NotificationBanner.kt index 6a56d7c3e3..7060011158 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/NotificationBanner.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/NotificationBanner.kt @@ -1,5 +1,8 @@ package net.mullvad.mullvadvpn +import android.content.Context +import android.content.Intent +import android.net.Uri import android.widget.TextView import android.view.View @@ -8,11 +11,15 @@ import net.mullvad.mullvadvpn.model.BlockReason import net.mullvad.mullvadvpn.model.KeygenEvent import net.mullvad.mullvadvpn.model.TunnelState -class NotificationBanner(val parentView: View) { +class NotificationBanner(val parentView: View, val context: Context) { + private val accountUrl = Uri.parse(context.getString(R.string.account_url)) + private val banner: View = parentView.findViewById(R.id.notification_banner) private val title: TextView = parentView.findViewById(R.id.notification_title) private val message: TextView = parentView.findViewById(R.id.notification_message) + private val icon: View = parentView.findViewById(R.id.notification_icon) + private var externalLink: Uri? = null private var visible = false var keyState: KeygenEvent? = null @@ -27,7 +34,12 @@ class NotificationBanner(val parentView: View) { update() } + init { + banner.setOnClickListener { onClick() } + } + private fun update() { + externalLink = null updateBasedOnKeyState() || updateBasedOnTunnelState() } @@ -35,8 +47,13 @@ class NotificationBanner(val parentView: View) { when (keyState) { null -> return false is KeygenEvent.NewKey -> return false - is KeygenEvent.TooManyKeys -> show(R.string.too_many_keys, null) - is KeygenEvent.GenerationFailure -> show(R.string.failed_to_generate_key, null) + is KeygenEvent.TooManyKeys -> { + externalLink = accountUrl + show(R.string.wireguard_error, R.string.too_many_keys) + } + is KeygenEvent.GenerationFailure -> { + show(R.string.wireguard_error, R.string.failed_to_generate_key) + } } return true @@ -94,6 +111,14 @@ class NotificationBanner(val parentView: View) { message.setText(messageText) message.visibility = View.VISIBLE } + + if (externalLink == null) { + banner.setClickable(false) + icon.visibility = View.GONE + } else { + banner.setClickable(true) + icon.visibility = View.VISIBLE + } } private fun hide() { @@ -104,4 +129,12 @@ class NotificationBanner(val parentView: View) { } } } + + private fun onClick() { + val externalLink = this.externalLink + + if (externalLink != null) { + context.startActivity(Intent(Intent.ACTION_VIEW, externalLink)) + } + } } |
