diff options
3 files changed, 17 insertions, 17 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt index af666f99e4..be534edec5 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt @@ -162,14 +162,14 @@ class ConnectFragment : Fragment() { private fun updateTunnelState(uiState: TunnelState, realState: TunnelState) = GlobalScope.launch(Dispatchers.Main) { + notificationBanner.tunnelState = realState locationInfoCache.state = realState locationInfo.state = realState headerBar.setState(realState) + status.setState(realState) actionButton.tunnelState = uiState switchLocationButton.state = uiState - notificationBanner.tunnelState = uiState - status.setState(uiState) } private fun updateKeyStatus(keyStatus: KeygenEvent?) = GlobalScope.launch(Dispatchers.Main) { diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ForegroundNotificationManager.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ForegroundNotificationManager.kt index f42a48ce8d..dfb153bbc2 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ForegroundNotificationManager.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ForegroundNotificationManager.kt @@ -26,8 +26,8 @@ class ForegroundNotificationManager(val service: Service, val connectionProxy: C private val notificationManager = service.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager - private val listenerId = connectionProxy.onUiStateChange.subscribe { uiState -> - tunnelState = uiState + private val listenerId = connectionProxy.onStateChange.subscribe { state -> + tunnelState = state } private var reconnecting = false @@ -147,7 +147,7 @@ class ForegroundNotificationManager(val service: Service, val connectionProxy: C fun onDestroy() { listenerId?.let { listener -> - connectionProxy.onUiStateChange.unsubscribe(listener) + connectionProxy.onStateChange.unsubscribe(listener) } service.apply { diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt index 2c46e34292..1919e2c820 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt @@ -25,24 +25,23 @@ class ConnectionProxy(val context: Context, val daemon: Deferred<MullvadDaemon>) private val attachListenerJob = attachListener() private val fetchInitialStateJob = fetchInitialState() - private var realState: TunnelState? = null + private val initialState: TunnelState = TunnelState.Disconnected() + + var state = initialState set(value) { field = value - uiState = value ?: TunnelState.Disconnected() - } - - val state: TunnelState - get() { - return realState ?: TunnelState.Disconnected() + onStateChange.notify(value) + uiState = value } - var uiState: TunnelState = TunnelState.Disconnected() + var uiState = initialState private set(value) { field = value onUiStateChange.notify(value) } var onUiStateChange = EventNotifier(uiState) + var onStateChange = EventNotifier(state) var vpnPermission = CompletableDeferred<Boolean>() fun connect() { @@ -74,6 +73,7 @@ class ConnectionProxy(val context: Context, val daemon: Deferred<MullvadDaemon>) fun onDestroy() { onUiStateChange.unsubscribeAll() + onStateChange.unsubscribeAll() attachListenerJob.cancel() detachListener() fetchInitialStateJob.cancel() @@ -128,11 +128,11 @@ class ConnectionProxy(val context: Context, val daemon: Deferred<MullvadDaemon>) } private fun fetchInitialState() = GlobalScope.launch(Dispatchers.Default) { - val initialState = daemon.await().getState() + val currentState = daemon.await().getState() synchronized(this) { - if (realState == null) { - realState = initialState + if (state === initialState) { + state = currentState } } } @@ -140,7 +140,7 @@ class ConnectionProxy(val context: Context, val daemon: Deferred<MullvadDaemon>) private fun attachListener() = GlobalScope.launch(Dispatchers.Default) { daemon.await().onTunnelStateChange = { newState -> synchronized(this) { - realState = newState + state = newState } } } |
