summaryrefslogtreecommitdiffhomepage
path: root/android/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'android/src/main')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/AppVersionInfoCache.kt6
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/CustomDns.kt8
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt9
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/SettingsListener.kt24
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AdvancedFragment.kt11
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/PreferencesFragment.kt6
6 files changed, 39 insertions, 25 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/AppVersionInfoCache.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/AppVersionInfoCache.kt
index 8a84642399..c837f55190 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/AppVersionInfoCache.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/AppVersionInfoCache.kt
@@ -54,8 +54,10 @@ class AppVersionInfoCache(
private set
init {
- settingsListener.settingsNotifier.subscribe(this) { settings ->
- showBetaReleases = settings.showBetaReleases
+ settingsListener.settingsNotifier.subscribe(this) { maybeSettings ->
+ maybeSettings?.let { settings ->
+ showBetaReleases = settings.showBetaReleases
+ }
}
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/CustomDns.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/CustomDns.kt
index 9b41877f4c..28557438e7 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/CustomDns.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/CustomDns.kt
@@ -21,9 +21,11 @@ class CustomDns(val daemon: MullvadDaemon, val settingsListener: SettingsListene
val onDnsServersChanged = EventNotifier<List<InetAddress>>(emptyList())
init {
- settingsListener.dnsOptionsNotifier.subscribe(this) { dnsOptions ->
- enabled = dnsOptions.custom
- dnsServers = ArrayList(dnsOptions.addresses)
+ settingsListener.dnsOptionsNotifier.subscribe(this) { maybeDnsOptions ->
+ maybeDnsOptions?.let { dnsOptions ->
+ enabled = dnsOptions.custom
+ dnsServers = ArrayList(dnsOptions.addresses)
+ }
}
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
index 2c8293be1c..add94737d1 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
@@ -78,10 +78,9 @@ class MullvadVpnService : TalpidVpnService() {
private var pendingAction by observable<PendingAction?>(null) { _, _, _ ->
instance?.let { activeInstance ->
- handlePendingAction(
- activeInstance.connectionProxy,
- activeInstance.settingsListener.settings
- )
+ activeInstance.settingsListener.settings?.let { currentSettings ->
+ handlePendingAction(activeInstance.connectionProxy, currentSettings)
+ }
}
}
@@ -232,7 +231,7 @@ class MullvadVpnService : TalpidVpnService() {
}
private suspend fun setUpInstance(daemon: MullvadDaemon, settings: Settings) {
- val settingsListener = SettingsListener(settings, daemonInstance.intermittentDaemon)
+ val settingsListener = SettingsListener(daemonInstance.intermittentDaemon)
val connectionProxy = ConnectionProxy(this, daemon)
val customDns = CustomDns(daemon, settingsListener)
val splitTunneling = splitTunneling.await()
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/SettingsListener.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/SettingsListener.kt
index 186065c20b..fd82b9f00c 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/SettingsListener.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/SettingsListener.kt
@@ -1,14 +1,16 @@
package net.mullvad.mullvadvpn.service
+import net.mullvad.mullvadvpn.model.DnsOptions
+import net.mullvad.mullvadvpn.model.RelaySettings
import net.mullvad.mullvadvpn.model.Settings
import net.mullvad.mullvadvpn.util.Intermittent
import net.mullvad.talpid.util.EventNotifier
-class SettingsListener(val initialSettings: Settings, val daemon: Intermittent<MullvadDaemon>) {
- val accountNumberNotifier = EventNotifier(initialSettings.accountToken)
- val dnsOptionsNotifier = EventNotifier(initialSettings.tunnelOptions.dnsOptions)
- val relaySettingsNotifier = EventNotifier(initialSettings.relaySettings)
- val settingsNotifier: EventNotifier<Settings> = EventNotifier(initialSettings)
+class SettingsListener(val daemon: Intermittent<MullvadDaemon>) {
+ val accountNumberNotifier = EventNotifier<String?>(null)
+ val dnsOptionsNotifier = EventNotifier<DnsOptions?>(null)
+ val relaySettingsNotifier = EventNotifier<RelaySettings?>(null)
+ val settingsNotifier = EventNotifier<Settings?>(null)
var settings by settingsNotifier.notifiable()
private set
@@ -32,7 +34,11 @@ class SettingsListener(val initialSettings: Settings, val daemon: Intermittent<M
}
fun subscribe(id: Any, listener: (Settings) -> Unit) {
- settingsNotifier.subscribe(id, listener)
+ settingsNotifier.subscribe(id) { maybeSettings ->
+ maybeSettings?.let { settings ->
+ listener(settings)
+ }
+ }
}
fun unsubscribe(id: Any) {
@@ -57,15 +63,15 @@ class SettingsListener(val initialSettings: Settings, val daemon: Intermittent<M
private fun handleNewSettings(newSettings: Settings) {
synchronized(this) {
- if (settings.accountToken != newSettings.accountToken) {
+ if (settings?.accountToken != newSettings.accountToken) {
accountNumberNotifier.notify(newSettings.accountToken)
}
- if (settings.tunnelOptions.dnsOptions != newSettings.tunnelOptions.dnsOptions) {
+ if (settings?.tunnelOptions?.dnsOptions != newSettings.tunnelOptions.dnsOptions) {
dnsOptionsNotifier.notify(newSettings.tunnelOptions.dnsOptions)
}
- if (settings.relaySettings != newSettings.relaySettings) {
+ if (settings?.relaySettings != newSettings.relaySettings) {
relaySettingsNotifier.notify(newSettings.relaySettings)
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AdvancedFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AdvancedFragment.kt
index ede5345bd4..87695b543f 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AdvancedFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AdvancedFragment.kt
@@ -109,8 +109,10 @@ class AdvancedFragment : ServiceDependentFragment(OnNoService.GoBack) {
}
}
- settingsListener.settingsNotifier.subscribe(this) { settings ->
- updateUi(settings)
+ settingsListener.settingsNotifier.subscribe(this) { maybeSettings ->
+ maybeSettings?.let { settings ->
+ updateUi(settings)
+ }
}
}
@@ -125,8 +127,9 @@ class AdvancedFragment : ServiceDependentFragment(OnNoService.GoBack) {
private suspend fun confirmAddAddress(address: InetAddress): Boolean {
return when {
address.isLinkLocalAddress() || address.isSiteLocalAddress() -> {
- settingsListener.settings.allowLan ||
- showConfirmDnsServerDialog(R.string.confirm_local_dns)
+ val allowLanEnabled = settingsListener.settings?.allowLan ?: false
+
+ allowLanEnabled || showConfirmDnsServerDialog(R.string.confirm_local_dns)
}
else -> showConfirmDnsServerDialog(R.string.confirm_public_dns)
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/PreferencesFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/PreferencesFragment.kt
index 884217a2ce..5452bf49c3 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/PreferencesFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/PreferencesFragment.kt
@@ -43,8 +43,10 @@ class PreferencesFragment : ServiceDependentFragment(OnNoService.GoBack) {
}
}
- settingsListener.settingsNotifier.subscribe(this) { settings ->
- updateUi(settings)
+ settingsListener.settingsNotifier.subscribe(this) { maybeSettings ->
+ maybeSettings?.let { settings ->
+ updateUi(settings)
+ }
}
titleController = CollapsibleTitleController(view)