summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-06-24 23:37:19 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-06-24 23:51:01 +0000
commit215bf659834d63cd66888f4086c0370dc61994d1 (patch)
tree72218e16aba2842d3880de3fa1a023524d2f0e93 /android/src
parenta83d839577f3544c4bc3c1744d282fe92a738c9d (diff)
downloadmullvadvpn-215bf659834d63cd66888f4086c0370dc61994d1.tar.xz
mullvadvpn-215bf659834d63cd66888f4086c0370dc61994d1.zip
Use `SettingsListener` in `RelayListListener`
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/SelectLocationFragment.kt9
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/RelayListListener.kt41
3 files changed, 26 insertions, 26 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt
index d0cdaa4d87..c4eae685be 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt
@@ -38,8 +38,8 @@ class MainActivity : FragmentActivity() {
val locationInfoCache = LocationInfoCache(asyncDaemon)
val problemReport = MullvadProblemReport()
- var relayListListener = RelayListListener(this)
var settingsListener = SettingsListener(this)
+ var relayListListener = RelayListListener(this)
val accountCache = AccountCache(settingsListener, asyncDaemon)
private var waitForDaemonJob: Job? = null
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/SelectLocationFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/SelectLocationFragment.kt
index 96519c1893..1d747f16e7 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/SelectLocationFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/SelectLocationFragment.kt
@@ -37,8 +37,7 @@ class SelectLocationFragment : Fragment() {
init {
relayListAdapter.onSelect = { relayItem ->
- relayListListener.selectedRelayItem = relayItem
- updateLocationConstraint()
+ updateLocationConstraint(relayItem)
close()
}
}
@@ -100,8 +99,10 @@ class SelectLocationFragment : Fragment() {
}
}
- private fun updateLocationConstraint() = GlobalScope.launch(Dispatchers.Default) {
- val constraint = relayListListener.selectedRelayLocation
+ private fun updateLocationConstraint(relayItem: RelayItem?) =
+ GlobalScope.launch(Dispatchers.Default) {
+ val constraint: Constraint<LocationConstraint> =
+ relayItem?.run { Constraint.Only(location) } ?: Constraint.Any()
parentActivity.asyncDaemon.await().updateRelaySettings(
RelaySettingsUpdate.RelayConstraintsUpdate(constraint)
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/RelayListListener.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/RelayListListener.kt
index 64121aac96..9e2497d471 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/RelayListListener.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/RelayListListener.kt
@@ -21,21 +21,7 @@ class RelayListListener(val parentActivity: MainActivity) {
private var relaySettings: RelaySettings? = null
var selectedRelayItem: RelayItem? = null
- set(value) {
- field = value
- updateRelaySettings()
- }
-
- val selectedRelayLocation: Constraint<LocationConstraint>
- get() {
- val location = selectedRelayItem?.location
-
- if (location == null) {
- return Constraint.Any()
- } else {
- return Constraint.Only(location)
- }
- }
+ private set
var onRelayListChange: ((RelayList, RelayItem?) -> Unit)? = null
set(value) {
@@ -50,8 +36,15 @@ class RelayListListener(val parentActivity: MainActivity) {
}
}
+ init {
+ parentActivity.settingsListener.onRelaySettingsChange = { newRelaySettings ->
+ relaySettingsChanged(newRelaySettings)
+ }
+ }
+
fun onDestroy() {
setUpJob.cancel()
+ parentActivity.settingsListener.onRelaySettingsChange = null
if (daemon.isActive) {
daemon.cancel()
@@ -76,8 +69,6 @@ class RelayListListener(val parentActivity: MainActivity) {
private suspend fun fetchInitialRelayList() {
val relayLocations = daemon.await().getRelayLocations()
- relaySettings = parentActivity.asyncSettings.await().relaySettings
-
synchronized(this) {
if (relayList == null) {
relayListChanged(RelayList(relayLocations))
@@ -85,6 +76,18 @@ class RelayListListener(val parentActivity: MainActivity) {
}
}
+ private fun relaySettingsChanged(newRelaySettings: RelaySettings?) {
+ synchronized(this) {
+ val relayList = this.relayList
+
+ relaySettings = newRelaySettings ?: RelaySettings.RelayConstraints(Constraint.Any())
+
+ if (relayList != null) {
+ relayListChanged(relayList)
+ }
+ }
+ }
+
private fun relayListChanged(newRelayList: RelayList) {
synchronized(this) {
relayList = newRelayList
@@ -108,8 +111,4 @@ class RelayListListener(val parentActivity: MainActivity) {
return null
}
-
- private fun updateRelaySettings() {
- relaySettings = RelaySettings.RelayConstraints(selectedRelayLocation)
- }
}