diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-01-12 13:34:00 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-03-23 12:36:35 +0000 |
| commit | 31d21b602693dec7212dd4753b97cfec20184744 (patch) | |
| tree | c5b3ba9c2706a56d01875c860687f2bddca863ac /android/src/main | |
| parent | 52dea8bb89718f10867b78751610c551ac779917 (diff) | |
| download | mullvadvpn-31d21b602693dec7212dd4753b97cfec20184744.tar.xz mullvadvpn-31d21b602693dec7212dd4753b97cfec20184744.zip | |
Remove requirement for initial settings
Diffstat (limited to 'android/src/main')
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) |
