summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-01-11 20:12:08 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-04-21 12:24:47 +0000
commit8c8b2e98cb49b9a3df99bb5f8e834a46b715379e (patch)
treea51afe46b5a2c7c33e79a262bcce82d61129317b /android/src
parent46b0bed2154daa43d6e79413f4f54d0737ff8756 (diff)
downloadmullvadvpn-8c8b2e98cb49b9a3df99bb5f8e834a46b715379e.tar.xz
mullvadvpn-8c8b2e98cb49b9a3df99bb5f8e834a46b715379e.zip
Allow setting account with a request from UI side
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Request.kt3
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt8
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ServiceConnection.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/SettingsListener.kt8
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)
}