summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-04-21 14:37:25 -0300
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-04-21 14:37:25 -0300
commit32394e20f5e9cd6425cf55477e71cc13b7799327 (patch)
treeac1365dee8cb3a21582666fc314a1b2dd5885ced /android/src
parent03832400d7b84de43d626727e28f39685d86e36e (diff)
parent8fe5258ba75bb12c3d3944153ac39b3bc7c06e61 (diff)
downloadmullvadvpn-32394e20f5e9cd6425cf55477e71cc13b7799327.tar.xz
mullvadvpn-32394e20f5e9cd6425cf55477e71cc13b7799327.zip
Merge branch 'improve-listener-ready-handling'
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt17
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ServiceConnection.kt17
2 files changed, 19 insertions, 15 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt
index 6569c155d2..26131d9f39 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt
@@ -16,7 +16,6 @@ import androidx.fragment.app.FragmentManager
import net.mullvad.mullvadvpn.BuildConfig
import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.dataproxy.MullvadProblemReport
-import net.mullvad.mullvadvpn.ipc.Event
import net.mullvad.mullvadvpn.service.MullvadVpnService
import net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnection
import net.mullvad.talpid.util.EventNotifier
@@ -54,17 +53,11 @@ open class MainActivity : FragmentActivity() {
android.util.Log.d("mullvad", "UI connection to the service changed: $service")
serviceConnection?.onDestroy()
- val newConnection = service?.let { safeService ->
- ServiceConnection(safeService)
+ serviceConnection = service?.let { safeService ->
+ ServiceConnection(safeService, ::handleNewServiceConnection)
}
- serviceConnection = newConnection
-
- if (newConnection != null) {
- newConnection.dispatcher.registerHandler(Event.ListenerReady::class) { _ ->
- serviceNotifier.notify(newConnection)
- }
- } else {
+ if (service == null) {
serviceNotifier.notify(null)
}
@@ -206,6 +199,10 @@ open class MainActivity : FragmentActivity() {
startActivityForResult(intent, 0)
}
+ private fun handleNewServiceConnection(connection: ServiceConnection) {
+ serviceNotifier.notify(connection)
+ }
+
private fun tryToConnect() {
serviceConnection?.apply {
connectionProxy.connect()
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 f24ca088f4..3034b64073 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
@@ -20,16 +20,19 @@ import org.koin.core.scope.get
// The properties of this class can be used to send events to the service, to listen for events from
// the service and to get values received from events.
@OptIn(KoinApiExtension::class)
-class ServiceConnection(private val service: ServiceInstance) : KoinScopeComponent {
+class ServiceConnection(
+ private val service: ServiceInstance,
+ onServiceReady: (ServiceConnection) -> Unit
+) : KoinScopeComponent {
+ private val dispatcher = DispatchingHandler(Looper.getMainLooper()) { message ->
+ Event.fromMessage(message)
+ }
+
override val scope = getKoin().createScope(
SERVICE_CONNECTION_SCOPE,
named(SERVICE_CONNECTION_SCOPE), this
)
- val dispatcher = DispatchingHandler(Looper.getMainLooper()) { message ->
- Event.fromMessage(message)
- }
-
val daemon = service.daemon
val accountCache = AccountCache(service.messenger, dispatcher)
val authTokenCache = AuthTokenCache(service.messenger, dispatcher)
@@ -47,6 +50,10 @@ class ServiceConnection(private val service: ServiceInstance) : KoinScopeCompone
var relayListListener = RelayListListener(service.messenger, dispatcher, settingsListener)
init {
+ dispatcher.registerHandler(Event.ListenerReady::class) { _ ->
+ onServiceReady(this@ServiceConnection)
+ }
+
registerListener()
}