diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-01-11 20:12:08 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-04-21 12:24:47 +0000 |
| commit | 8c8b2e98cb49b9a3df99bb5f8e834a46b715379e (patch) | |
| tree | a51afe46b5a2c7c33e79a262bcce82d61129317b /android/src | |
| parent | 46b0bed2154daa43d6e79413f4f54d0737ff8756 (diff) | |
| download | mullvadvpn-8c8b2e98cb49b9a3df99bb5f8e834a46b715379e.tar.xz mullvadvpn-8c8b2e98cb49b9a3df99bb5f8e834a46b715379e.zip | |
Allow setting account with a request from UI side
Diffstat (limited to 'android/src')
4 files changed, 19 insertions, 2 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Request.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Request.kt index db72cb08c5..64e8bcc17b 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Request.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Request.kt @@ -65,6 +65,9 @@ sealed class Request : Message.RequestMessage() { ) : Request() @Parcelize + data class SetAccount(val account: String?) : Request() + + @Parcelize data class SetEnableCustomDns(val enable: Boolean) : Request() @Parcelize diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt index 6f978cd46f..5e6524e3a0 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt @@ -57,6 +57,14 @@ class AccountCache(private val endpoint: ServiceEndpoint) { private var createdAccountExpiry: DateTime? = null private var oldAccountExpiry: DateTime? = null + var account: String? + get() = endpoint.settingsListener.accountNumberNotifier.latestEvent + set(value) { + jobTracker.newBackgroundJob("setAccount") { + daemon.await().setAccount(value) + } + } + var loginStatus by onLoginStatusChange.notifiable() private set 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 95c28b810e..b8410c740e 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 @@ -36,7 +36,7 @@ class ServiceConnection(private val service: ServiceInstance) : KoinScopeCompone val connectionProxy = ConnectionProxy(service.messenger, dispatcher) val keyStatusListener = KeyStatusListener(service.messenger, dispatcher) val locationInfoCache = LocationInfoCache(dispatcher) - val settingsListener = SettingsListener(dispatcher) + val settingsListener = SettingsListener(service.messenger, dispatcher) val splitTunneling = get<SplitTunneling>( parameters = { parametersOf(service.messenger, dispatcher) } ) diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/SettingsListener.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/SettingsListener.kt index f98b8a27ae..7b18ce277f 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/SettingsListener.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/SettingsListener.kt @@ -1,13 +1,15 @@ package net.mullvad.mullvadvpn.ui.serviceconnection +import android.os.Messenger import net.mullvad.mullvadvpn.ipc.DispatchingHandler import net.mullvad.mullvadvpn.ipc.Event +import net.mullvad.mullvadvpn.ipc.Request import net.mullvad.mullvadvpn.model.DnsOptions import net.mullvad.mullvadvpn.model.RelaySettings import net.mullvad.mullvadvpn.model.Settings import net.mullvad.talpid.util.EventNotifier -class SettingsListener(eventDispatcher: DispatchingHandler<Event>) { +class SettingsListener(val connection: Messenger, eventDispatcher: DispatchingHandler<Event>) { val accountNumberNotifier = EventNotifier<String?>(null) val dnsOptionsNotifier = EventNotifier<DnsOptions?>(null) val relaySettingsNotifier = EventNotifier<RelaySettings?>(null) @@ -15,6 +17,10 @@ class SettingsListener(eventDispatcher: DispatchingHandler<Event>) { private var settings by settingsNotifier.notifiable() + var account: String? + get() = accountNumberNotifier.latestEvent + set(value) { connection.send(Request.SetAccount(value).message) } + init { eventDispatcher.registerHandler(Event.SettingsUpdate::class, ::handleNewEvent) } |
