diff options
Diffstat (limited to 'android/src')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt | 17 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ServiceConnection.kt | 17 |
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() } |
