summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt15
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ServiceConnection.kt9
2 files changed, 13 insertions, 11 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..46f3aa135e 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,13 @@ 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) { connection ->
+ serviceNotifier.notify(connection)
+ }
}
- serviceConnection = newConnection
-
- if (newConnection != null) {
- newConnection.dispatcher.registerHandler(Event.ListenerReady::class) { _ ->
- serviceNotifier.notify(newConnection)
- }
- } else {
+ if (service == null) {
serviceNotifier.notify(null)
}
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..9fba60681f 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,7 +20,10 @@ 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 {
override val scope = getKoin().createScope(
SERVICE_CONNECTION_SCOPE,
named(SERVICE_CONNECTION_SCOPE), this
@@ -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()
}