diff options
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) } |
