diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-01-07 17:56:32 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-04-16 16:06:00 +0000 |
| commit | f6264ec6037da274bcca0a1bbeb5daf69b44b244 (patch) | |
| tree | c83395f12a7e650baa56f26f4a903613ead8428a /android/src | |
| parent | f0c8c9600a615e8f106bf2a66285233fa9c7622c (diff) | |
| download | mullvadvpn-f6264ec6037da274bcca0a1bbeb5daf69b44b244.tar.xz mullvadvpn-f6264ec6037da274bcca0a1bbeb5daf69b44b244.zip | |
Handle new relay list events in the UI side
Diffstat (limited to 'android/src')
2 files changed, 13 insertions, 31 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/RelayListListener.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/RelayListListener.kt index 29119fba40..a37b595404 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/RelayListListener.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/RelayListListener.kt @@ -1,18 +1,17 @@ package net.mullvad.mullvadvpn.ui.serviceconnection -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.launch +import net.mullvad.mullvadvpn.ipc.DispatchingHandler +import net.mullvad.mullvadvpn.ipc.Event import net.mullvad.mullvadvpn.model.Constraint import net.mullvad.mullvadvpn.model.RelayConstraints import net.mullvad.mullvadvpn.model.RelaySettings import net.mullvad.mullvadvpn.relaylist.RelayItem import net.mullvad.mullvadvpn.relaylist.RelayList -import net.mullvad.mullvadvpn.service.MullvadDaemon - -class RelayListListener(val daemon: MullvadDaemon, val settingsListener: SettingsListener) { - private val setUpJob = setUp() +class RelayListListener( + eventDispatcher: DispatchingHandler<Event>, + val settingsListener: SettingsListener +) { private var relayList: RelayList? = null private var relaySettings: RelaySettings? = null @@ -33,39 +32,22 @@ class RelayListListener(val daemon: MullvadDaemon, val settingsListener: Setting } init { + eventDispatcher.registerHandler(Event.NewRelayList::class) { event -> + event.relayList?.let { relayLocations -> + relayListChanged(RelayList(relayLocations)) + } + } + settingsListener.relaySettingsNotifier.subscribe(this) { newRelaySettings -> relaySettingsChanged(newRelaySettings) } } fun onDestroy() { - setUpJob.cancel() settingsListener.relaySettingsNotifier.unsubscribe(this) - daemon.onRelayListChange = null onRelayListChange = null } - private fun setUp() = GlobalScope.launch(Dispatchers.Default) { - setUpListener() - fetchInitialRelayList() - } - - private fun setUpListener() { - daemon.onRelayListChange = { relayLocations -> - relayListChanged(RelayList(relayLocations)) - } - } - - private fun fetchInitialRelayList() { - val relayLocations = daemon.getRelayLocations() - - synchronized(this) { - if (relayList == null && relayLocations != null) { - relayListChanged(RelayList(relayLocations)) - } - } - } - private fun relaySettingsChanged(newRelaySettings: RelaySettings?) { synchronized(this) { val relayList = this.relayList diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ServiceConnection.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ServiceConnection.kt index 531fddfa89..61f2f6ef5e 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ServiceConnection.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ServiceConnection.kt @@ -43,7 +43,7 @@ class ServiceConnection(private val service: ServiceInstance) : KoinScopeCompone val appVersionInfoCache = AppVersionInfoCache(dispatcher, settingsListener) val customDns = CustomDns(service.messenger, settingsListener) - var relayListListener = RelayListListener(daemon, settingsListener) + var relayListListener = RelayListListener(dispatcher, settingsListener) init { registerListener() |
