diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-07-31 14:40:20 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-07-31 15:32:33 +0000 |
| commit | f233f8531a837c883e7e163ba26fd254b81af2b9 (patch) | |
| tree | 57e9bcda3f4a2a0b883f3869ea6f15edf19e6ddb /android/src/main | |
| parent | 290931d668c32b68ff1656286a7c22c2afa2fe20 (diff) | |
| download | mullvadvpn-f233f8531a837c883e7e163ba26fd254b81af2b9.tar.xz mullvadvpn-f233f8531a837c883e7e163ba26fd254b81af2b9.zip | |
Show unsupported version notification
Diffstat (limited to 'android/src/main')
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> |
