diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-06-24 23:37:19 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-06-24 23:51:01 +0000 |
| commit | 215bf659834d63cd66888f4086c0370dc61994d1 (patch) | |
| tree | 72218e16aba2842d3880de3fa1a023524d2f0e93 /android | |
| parent | a83d839577f3544c4bc3c1744d282fe92a738c9d (diff) | |
| download | mullvadvpn-215bf659834d63cd66888f4086c0370dc61994d1.tar.xz mullvadvpn-215bf659834d63cd66888f4086c0370dc61994d1.zip | |
Use `SettingsListener` in `RelayListListener`
Diffstat (limited to 'android')
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) - } } |
