summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-09-30 00:28:07 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-09-30 12:29:57 +0000
commitffa48bffcf42d18e0457e11544126d90a7a273fe (patch)
treef583207eebf5b0b974136cbed529b7fcde05b386 /android/src
parentdca3a5d66da4228708f09ece7cfc4f6875efa4d7 (diff)
downloadmullvadvpn-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.kt6
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/SettingsListener.kt11
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()
}