summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-07-31 14:40:20 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-07-31 15:32:33 +0000
commitf233f8531a837c883e7e163ba26fd254b81af2b9 (patch)
tree57e9bcda3f4a2a0b883f3869ea6f15edf19e6ddb /android
parent290931d668c32b68ff1656286a7c22c2afa2fe20 (diff)
downloadmullvadvpn-f233f8531a837c883e7e163ba26fd254b81af2b9.tar.xz
mullvadvpn-f233f8531a837c883e7e163ba26fd254b81af2b9.zip
Show unsupported version notification
Diffstat (limited to 'android')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt5
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/NotificationBanner.kt27
-rw-r--r--android/src/main/res/values/strings.xml5
3 files changed, 31 insertions, 6 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt
index 62a9765cce..e9713fff60 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt
@@ -13,6 +13,7 @@ import android.view.View
import android.view.ViewGroup
import android.widget.ImageButton
+import net.mullvad.mullvadvpn.dataproxy.AppVersionInfoCache
import net.mullvad.mullvadvpn.dataproxy.ConnectionProxy
import net.mullvad.mullvadvpn.dataproxy.KeyStatusListener
import net.mullvad.mullvadvpn.dataproxy.LocationInfoCache
@@ -33,6 +34,7 @@ class ConnectFragment : Fragment() {
private lateinit var keyStatusListener: KeyStatusListener
private lateinit var locationInfoCache: LocationInfoCache
private lateinit var relayListListener: RelayListListener
+ private lateinit var versionInfoCache: AppVersionInfoCache
private lateinit var updateKeyStatusJob: Job
private lateinit var updateTunnelStateJob: Job
@@ -45,6 +47,7 @@ class ConnectFragment : Fragment() {
keyStatusListener = parentActivity.keyStatusListener
locationInfoCache = parentActivity.locationInfoCache
relayListListener = parentActivity.relayListListener
+ versionInfoCache = parentActivity.appVersionInfoCache
}
override fun onCreateView(
@@ -59,7 +62,7 @@ class ConnectFragment : Fragment() {
}
headerBar = HeaderBar(view, context!!)
- notificationBanner = NotificationBanner(view, context!!)
+ notificationBanner = NotificationBanner(view, context!!, versionInfoCache)
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 bd3291b148..6fd013f0b1 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/NotificationBanner.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/NotificationBanner.kt
@@ -7,13 +7,19 @@ import android.widget.ImageView
import android.widget.TextView
import android.view.View
+import net.mullvad.mullvadvpn.dataproxy.AppVersionInfoCache
import net.mullvad.mullvadvpn.model.ActionAfterDisconnect
import net.mullvad.mullvadvpn.model.BlockReason
import net.mullvad.mullvadvpn.model.KeygenEvent
import net.mullvad.mullvadvpn.model.TunnelState
-class NotificationBanner(val parentView: View, val context: Context) {
+class NotificationBanner(
+ val parentView: View,
+ val context: Context,
+ val versionInfoCache: AppVersionInfoCache
+) {
private val accountUrl = Uri.parse(context.getString(R.string.account_url))
+ private val downloadUrl = Uri.parse(context.getString(R.string.download_url))
private val banner: View = parentView.findViewById(R.id.notification_banner)
private val status: ImageView = parentView.findViewById(R.id.notification_status)
@@ -42,7 +48,7 @@ class NotificationBanner(val parentView: View, val context: Context) {
private fun update() {
externalLink = null
- updateBasedOnKeyState() || updateBasedOnTunnelState()
+ updateBasedOnKeyState() || updateBasedOnTunnelState() || updateBasedOnVersionInfo()
}
private fun updateBasedOnKeyState(): Boolean {
@@ -67,20 +73,31 @@ class NotificationBanner(val parentView: View, val context: Context) {
when (state) {
is TunnelState.Disconnecting -> {
when (state.actionAfterDisconnect) {
- is ActionAfterDisconnect.Nothing -> hide()
+ is ActionAfterDisconnect.Nothing -> return false
is ActionAfterDisconnect.Block -> showBlocking(null)
is ActionAfterDisconnect.Reconnect -> showBlocking(null)
}
}
- is TunnelState.Disconnected -> hide()
+ is TunnelState.Disconnected -> return false
is TunnelState.Connecting -> showBlocking(null)
- is TunnelState.Connected -> hide()
+ is TunnelState.Connected -> return false
is TunnelState.Blocked -> showBlocking(state.reason)
}
return true
}
+ private fun updateBasedOnVersionInfo(): Boolean {
+ if (versionInfoCache.isLatest) {
+ hide()
+ } else {
+ externalLink = downloadUrl
+ showError(R.string.unsupported_version, R.string.unsupported_version_description)
+ }
+
+ return true
+ }
+
private fun showBlocking(reason: BlockReason?) {
val messageText = when (reason) {
null -> null
diff --git a/android/src/main/res/values/strings.xml b/android/src/main/res/values/strings.xml
index 5dbdf52934..cf534053ad 100644
--- a/android/src/main/res/values/strings.xml
+++ b/android/src/main/res/values/strings.xml
@@ -75,6 +75,10 @@
<string name="wireguard_error">WireGuard 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>
+ <string name="unsupported_version">Unsupported version</string>
+ <string name="unsupported_version_description">
+ You are running an unsupported app version. Please upgrade now to ensure your security
+ </string>
<string name="select_location">Select location</string>
<string name="select_location_description">
@@ -83,4 +87,5 @@
</string>
<string name="account_url">https://mullvad.net/en/account</string>
+ <string name="download_url">https://mullvad.net/en/download</string>
</resources>