summaryrefslogtreecommitdiffhomepage
path: root/android/src/main
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-01-07 17:56:32 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-04-16 16:06:00 +0000
commitf6264ec6037da274bcca0a1bbeb5daf69b44b244 (patch)
treec83395f12a7e650baa56f26f4a903613ead8428a /android/src/main
parentf0c8c9600a615e8f106bf2a66285233fa9c7622c (diff)
downloadmullvadvpn-f6264ec6037da274bcca0a1bbeb5daf69b44b244.tar.xz
mullvadvpn-f6264ec6037da274bcca0a1bbeb5daf69b44b244.zip
Handle new relay list events in the UI side
Diffstat (limited to 'android/src/main')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/RelayListListener.kt42
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ServiceConnection.kt2
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()