diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-09-30 00:28:07 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-09-30 12:29:57 +0000 |
| commit | ffa48bffcf42d18e0457e11544126d90a7a273fe (patch) | |
| tree | f583207eebf5b0b974136cbed529b7fcde05b386 /android/src | |
| parent | dca3a5d66da4228708f09ece7cfc4f6875efa4d7 (diff) | |
| download | mullvadvpn-ffa48bffcf42d18e0457e11544126d90a7a273fe.tar.xz mullvadvpn-ffa48bffcf42d18e0457e11544126d90a7a273fe.zip | |
Use an `EventListener` for `Settings` changes
Diffstat (limited to 'android/src')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt | 6 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/SettingsListener.kt | 11 |
2 files changed, 12 insertions, 5 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt index 940fabbf77..e5a43b0261 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt @@ -9,6 +9,7 @@ import net.mullvad.mullvadvpn.model.RelayList import net.mullvad.mullvadvpn.model.RelaySettingsUpdate import net.mullvad.mullvadvpn.model.Settings import net.mullvad.mullvadvpn.model.TunnelState +import net.mullvad.mullvadvpn.util.EventNotifier class MullvadDaemon(val vpnService: MullvadVpnService) { init { @@ -16,9 +17,10 @@ class MullvadDaemon(val vpnService: MullvadVpnService) { initialize(vpnService) } + val onSettingsChange = EventNotifier<Settings?>(null) + var onKeygenEvent: ((KeygenEvent) -> Unit)? = null var onRelayListChange: ((RelayList) -> Unit)? = null - var onSettingsChange: ((Settings) -> Unit)? = null var onTunnelStateChange: ((TunnelState) -> Unit)? = null external fun connect() @@ -48,7 +50,7 @@ class MullvadDaemon(val vpnService: MullvadVpnService) { } private fun notifySettingsEvent(settings: Settings) { - onSettingsChange?.invoke(settings) + onSettingsChange.notify(settings) } private fun notifyTunnelStateEvent(event: TunnelState) { diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/SettingsListener.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/SettingsListener.kt index 63b589fbca..1a3bcc9e35 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/SettingsListener.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/SettingsListener.kt @@ -14,6 +14,7 @@ class SettingsListener(val parentActivity: MainActivity) { private val setUpJob = setUp() + private var listenerId = -1 private var settings: Settings? = null var onAccountNumberChange: ((String?) -> Unit)? = null @@ -35,14 +36,18 @@ class SettingsListener(val parentActivity: MainActivity) { fun onDestroy() { setUpJob.cancel() - if (::daemon.isInitialized) { - daemon.onSettingsChange = null + if (listenerId != -1) { + daemon.onSettingsChange.unsubscribe(listenerId) } } private fun setUp() = GlobalScope.launch(Dispatchers.Default) { daemon = parentActivity.daemon.await() - daemon.onSettingsChange = { settings -> handleNewSettings(settings) } + + listenerId = daemon.onSettingsChange.subscribe { maybeSettings -> + maybeSettings?.let { settings -> handleNewSettings(settings) } + } + fetchInitialSettings() } |
