diff options
Diffstat (limited to 'android/src/main')
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) - } } |
