diff options
Diffstat (limited to 'android')
4 files changed, 21 insertions, 55 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectFragment.kt index d7f1704e9a..336f3507aa 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectFragment.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectFragment.kt @@ -19,7 +19,6 @@ import net.mullvad.mullvadvpn.dataproxy.LocationInfoCache import net.mullvad.mullvadvpn.dataproxy.RelayListListener import net.mullvad.mullvadvpn.model.KeygenEvent import net.mullvad.mullvadvpn.model.TunnelState -import net.mullvad.mullvadvpn.util.SmartDeferred val KEY_IS_TUNNEL_INFO_EXPANDED = "is_tunnel_info_expanded" @@ -32,7 +31,7 @@ class ConnectFragment : Fragment() { private lateinit var locationInfo: LocationInfo private lateinit var parentActivity: MainActivity - private lateinit var connectionProxy: SmartDeferred<ConnectionProxy> + private lateinit var connectionProxy: ConnectionProxy private lateinit var keyStatusListener: KeyStatusListener private lateinit var locationInfoCache: LocationInfoCache private lateinit var relayListListener: RelayListListener @@ -40,7 +39,6 @@ class ConnectFragment : Fragment() { private lateinit var updateKeyStatusJob: Job private var updateTunnelStateJob: Job? = null - private var tunnelStateSubscriptionJob: Long? = null private var isTunnelInfoExpanded = false private var tunnelStateListener: Int? = null @@ -87,9 +85,9 @@ class ConnectFragment : Fragment() { actionButton = ConnectActionButton(view) actionButton.apply { - onConnect = { connectionProxy.awaitThen { connect() } } - onCancel = { connectionProxy.awaitThen { disconnect() } } - onDisconnect = { connectionProxy.awaitThen { disconnect() } } + onConnect = { connectionProxy.connect() } + onCancel = { connectionProxy.disconnect() } + onDisconnect = { connectionProxy.disconnect() } } switchLocationButton = SwitchLocationButton(view, resources) @@ -120,11 +118,9 @@ class ConnectFragment : Fragment() { switchLocationButton.location = selectedRelayItem } - tunnelStateSubscriptionJob = connectionProxy.awaitThen { - tunnelStateListener = onUiStateChange.subscribe { uiState -> - updateTunnelStateJob?.cancel() - updateTunnelStateJob = updateTunnelState(uiState, state) - } + tunnelStateListener = connectionProxy.onUiStateChange.subscribe { uiState -> + updateTunnelStateJob?.cancel() + updateTunnelStateJob = updateTunnelState(uiState, connectionProxy.state) } } @@ -133,14 +129,8 @@ class ConnectFragment : Fragment() { locationInfoCache.onNewLocation = null relayListListener.onRelayListChange = null - tunnelStateSubscriptionJob?.let { jobId -> - connectionProxy.cancelJob(jobId) - } - tunnelStateListener?.let { listener -> - connectionProxy.awaitThen { - onUiStateChange.unsubscribe(listener) - } + connectionProxy.onUiStateChange.unsubscribe(listener) } updateTunnelStateJob?.cancel() 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 253998f188..914188a8ab 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt @@ -10,12 +10,12 @@ import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.Job -import kotlinx.coroutines.async import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking import net.mullvad.mullvadvpn.R import net.mullvad.mullvadvpn.dataproxy.AccountCache import net.mullvad.mullvadvpn.dataproxy.AppVersionInfoCache +import net.mullvad.mullvadvpn.dataproxy.ConnectionProxy import net.mullvad.mullvadvpn.dataproxy.KeyStatusListener import net.mullvad.mullvadvpn.dataproxy.LocationInfoCache import net.mullvad.mullvadvpn.dataproxy.MullvadProblemReport @@ -23,7 +23,6 @@ import net.mullvad.mullvadvpn.dataproxy.RelayListListener import net.mullvad.mullvadvpn.dataproxy.WwwAuthTokenRetriever import net.mullvad.mullvadvpn.service.MullvadDaemon import net.mullvad.mullvadvpn.service.MullvadVpnService -import net.mullvad.mullvadvpn.util.SmartDeferred class MainActivity : FragmentActivity() { companion object { @@ -37,13 +36,13 @@ class MainActivity : FragmentActivity() { private set var service = CompletableDeferred<MullvadVpnService.LocalBinder>() private set - private var serviceConnected = CompletableDeferred<Unit>() val problemReport = MullvadProblemReport() val appVersionInfoCache: AppVersionInfoCache get() = serviceConnection!!.appVersionInfoCache - val connectionProxy = SmartDeferred(configureConnectionProxy()) + val connectionProxy: ConnectionProxy + get() = serviceConnection!!.connectionProxy val keyStatusListener: KeyStatusListener get() = serviceConnection!!.keyStatusListener val relayListListener: RelayListListener @@ -69,8 +68,6 @@ class MainActivity : FragmentActivity() { serviceConnection = service?.let { service -> ServiceConnection(service, this@MainActivity) } - - serviceConnected.complete(Unit) } waitForDaemonJob = GlobalScope.launch(Dispatchers.Default) { @@ -96,7 +93,6 @@ class MainActivity : FragmentActivity() { service = CompletableDeferred<MullvadVpnService.LocalBinder>() daemon = CompletableDeferred<MullvadDaemon>() - serviceConnected = CompletableDeferred<Unit>() } } @@ -109,7 +105,7 @@ class MainActivity : FragmentActivity() { } if (intent.getBooleanExtra(KEY_SHOULD_CONNECT, false)) { - connectionProxy.awaitThen { connect() } + connectionProxy.connect() } } @@ -136,8 +132,6 @@ class MainActivity : FragmentActivity() { } override fun onDestroy() { - connectionProxy.cancel() - serviceConnection?.onDestroy() waitForDaemonJob?.cancel() @@ -179,14 +173,7 @@ class MainActivity : FragmentActivity() { } } - private fun configureConnectionProxy() = GlobalScope.async(Dispatchers.Default) { - serviceConnected.await() - serviceConnection!!.connectionProxy - } - private fun setVpnPermission(allow: Boolean) = GlobalScope.launch(Dispatchers.Default) { - connectionProxy.awaitThen { - vpnPermission.complete(allow) - } + connectionProxy.vpnPermission.complete(allow) } } diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SelectLocationFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SelectLocationFragment.kt index 9a885dd13d..fdb50715e9 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SelectLocationFragment.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SelectLocationFragment.kt @@ -25,11 +25,10 @@ import net.mullvad.mullvadvpn.relaylist.RelayItem import net.mullvad.mullvadvpn.relaylist.RelayItemDividerDecoration import net.mullvad.mullvadvpn.relaylist.RelayList import net.mullvad.mullvadvpn.relaylist.RelayListAdapter -import net.mullvad.mullvadvpn.util.SmartDeferred class SelectLocationFragment : Fragment() { private lateinit var parentActivity: MainActivity - private lateinit var connectionProxy: SmartDeferred<ConnectionProxy> + private lateinit var connectionProxy: ConnectionProxy private lateinit var relayListListener: RelayListListener private lateinit var relayListContainer: ViewSwitcher @@ -129,7 +128,7 @@ class SelectLocationFragment : Fragment() { val keyStatus = parentActivity.keyStatusListener.keyStatus if (keyStatus == null || keyStatus is KeygenEvent.NewKey) { - connectionProxy.awaitThen { connect() } + connectionProxy.connect() } } } diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WireguardKeyFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WireguardKeyFragment.kt index c27c9b0133..49537c7d75 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WireguardKeyFragment.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WireguardKeyFragment.kt @@ -27,7 +27,6 @@ import net.mullvad.mullvadvpn.dataproxy.WwwAuthTokenRetriever import net.mullvad.mullvadvpn.model.KeygenEvent import net.mullvad.mullvadvpn.model.KeygenFailure import net.mullvad.mullvadvpn.model.TunnelState -import net.mullvad.mullvadvpn.util.SmartDeferred import org.joda.time.DateTime import org.joda.time.DateTimeZone import org.joda.time.format.DateTimeFormat @@ -39,9 +38,8 @@ class WireguardKeyFragment : Fragment() { private var currentJob: Job? = null private var updateViewsJob: Job? = null private var tunnelStateListener: Int? = null - private var tunnelStateSubscriptionJob: Long? = null private var tunnelState: TunnelState = TunnelState.Disconnected() - private lateinit var connectionProxy: SmartDeferred<ConnectionProxy> + private lateinit var connectionProxy: ConnectionProxy private lateinit var keyStatusListener: KeyStatusListener private lateinit var parentActivity: MainActivity private lateinit var wwwTokenRetriever: WwwAuthTokenRetriever @@ -299,14 +297,8 @@ class WireguardKeyFragment : Fragment() { } override fun onPause() { - tunnelStateSubscriptionJob?.let { jobId -> - connectionProxy.cancelJob(jobId) - } - tunnelStateListener?.let { listener -> - connectionProxy.awaitThen { - onUiStateChange.unsubscribe(listener) - } + connectionProxy.onUiStateChange.unsubscribe(listener) } keyStatusListener.onKeyStatusChange = null @@ -321,12 +313,10 @@ class WireguardKeyFragment : Fragment() { override fun onResume() { super.onResume() - tunnelStateSubscriptionJob = connectionProxy.awaitThen { - tunnelStateListener = onUiStateChange.subscribe { uiState -> - tunnelState = uiState - updateViewsJob?.cancel() - updateViewsJob = updateViewJob() - } + tunnelStateListener = connectionProxy.onUiStateChange.subscribe { uiState -> + tunnelState = uiState + updateViewsJob?.cancel() + updateViewsJob = updateViewJob() } keyStatusListener.onKeyStatusChange = { _ -> |
