summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-01-12 21:32:37 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-03-25 18:19:59 +0000
commitf4ad9fd268f1bfbab376d8675a162288e1c18449 (patch)
tree0f686c5362222bbb2b4158ad53632c77263c8310 /android/src
parent47559d086663ec3ff166b41ff5331e58339e68ce (diff)
downloadmullvadvpn-f4ad9fd268f1bfbab376d8675a162288e1c18449.tar.xz
mullvadvpn-f4ad9fd268f1bfbab376d8675a162288e1c18449.zip
Obtain selected relay location from relay settings
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/LocationInfoCache.kt15
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/ServiceInstance.kt2
2 files changed, 16 insertions, 1 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/LocationInfoCache.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/LocationInfoCache.kt
index c0116e9ef7..04a99859a1 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/LocationInfoCache.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/LocationInfoCache.kt
@@ -10,12 +10,15 @@ import kotlinx.coroutines.channels.ReceiveChannel
import kotlinx.coroutines.channels.actor
import kotlinx.coroutines.channels.sendBlocking
import kotlinx.coroutines.withTimeout
+import net.mullvad.mullvadvpn.model.Constraint
import net.mullvad.mullvadvpn.model.GeoIpLocation
+import net.mullvad.mullvadvpn.model.RelaySettings
import net.mullvad.mullvadvpn.model.TunnelState
import net.mullvad.mullvadvpn.relaylist.Relay
import net.mullvad.mullvadvpn.relaylist.RelayCity
import net.mullvad.mullvadvpn.relaylist.RelayCountry
import net.mullvad.mullvadvpn.relaylist.RelayItem
+import net.mullvad.mullvadvpn.service.endpoint.SettingsListener
import net.mullvad.mullvadvpn.util.ExponentialBackoff
import net.mullvad.mullvadvpn.util.Intermittent
import net.mullvad.talpid.ConnectivityListener
@@ -24,6 +27,7 @@ import net.mullvad.talpid.util.autoSubscribable
class LocationInfoCache(
val connectivityListener: ConnectivityListener,
+ val settingsListener: SettingsListener,
val daemon: Intermittent<MullvadDaemon>
) {
companion object {
@@ -84,11 +88,15 @@ class LocationInfoCache(
fetchRequestChannel.sendBlocking(RequestFetch.ForRealLocation)
}
}
+
+ settingsListener.relaySettingsNotifier.subscribe(this, ::updateSelectedLocation)
}
fun onDestroy() {
connectivityListener.connectivityNotifier.unsubscribe(this)
+ settingsListener.relaySettingsNotifier.unsubscribe(this)
stateEvents = null
+
fetchRequestChannel.close()
onNewLocation = null
@@ -171,4 +179,11 @@ class LocationInfoCache(
location = newLocation
}
+
+ private fun updateSelectedLocation(relaySettings: RelaySettings?) {
+ val settings = relaySettings as? RelaySettings.Normal
+ val constraint = settings?.relayConstraints?.location as? Constraint.Only
+
+ selectedRelayLocation = constraint?.value?.location
+ }
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/ServiceInstance.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/ServiceInstance.kt
index 3bd6e479fb..cc6e3fdbb5 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/ServiceInstance.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/ServiceInstance.kt
@@ -19,7 +19,7 @@ class ServiceInstance(
val keyStatusListener = KeyStatusListener(daemon)
val locationInfoCache =
- LocationInfoCache(connectivityListener, intermittentDaemon).apply {
+ LocationInfoCache(connectivityListener, settingsListener, intermittentDaemon).apply {
stateEvents = connectionProxy.onStateChange
}