diff options
| author | Albin <albin@mullvad.net> | 2022-07-14 18:51:53 +0200 |
|---|---|---|
| committer | Albin <albin@mullvad.net> | 2022-07-20 09:59:02 +0200 |
| commit | 83aac3304d4b644e0677bec85527988cbf449ddd (patch) | |
| tree | 64759a99e751f27e0ed5d3deb5819b5235654c7b /android/app | |
| parent | ae38bb0eae7ff5d621505b683ad64ae475452e45 (diff) | |
| download | mullvadvpn-83aac3304d4b644e0677bec85527988cbf449ddd.tar.xz mullvadvpn-83aac3304d4b644e0677bec85527988cbf449ddd.zip | |
Make welcome view tunnel state aware
Diffstat (limited to 'android/app')
| -rw-r--r-- | android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/WelcomeFragment.kt | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/WelcomeFragment.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/WelcomeFragment.kt index 74db3c3118..925fe67b43 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/WelcomeFragment.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/WelcomeFragment.kt @@ -16,6 +16,8 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.delay import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.debounce +import kotlinx.coroutines.flow.emptyFlow +import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.launch import net.mullvad.mullvadvpn.R import net.mullvad.mullvadvpn.model.TunnelState @@ -24,6 +26,7 @@ import net.mullvad.mullvadvpn.ui.fragments.BaseFragment import net.mullvad.mullvadvpn.ui.serviceconnection.AccountRepository import net.mullvad.mullvadvpn.ui.serviceconnection.DeviceRepository import net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnectionManager +import net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnectionState import net.mullvad.mullvadvpn.ui.serviceconnection.authTokenCache import net.mullvad.mullvadvpn.ui.widget.HeaderBar import net.mullvad.mullvadvpn.ui.widget.RedeemVoucherButton @@ -31,6 +34,7 @@ import net.mullvad.mullvadvpn.ui.widget.SitePaymentButton import net.mullvad.mullvadvpn.util.JobTracker import net.mullvad.mullvadvpn.util.UNKNOWN_STATE_DEBOUNCE_DELAY_MILLISECONDS import net.mullvad.mullvadvpn.util.addDebounceForUnknownState +import net.mullvad.mullvadvpn.util.callbackFlowFromNotifier import org.joda.time.DateTime import org.koin.android.ext.android.inject @@ -44,6 +48,7 @@ class WelcomeFragment : BaseFragment() { private val serviceConnectionManager: ServiceConnectionManager by inject() private lateinit var accountLabel: TextView + private lateinit var headerBar: HeaderBar private lateinit var sitePaymentButton: SitePaymentButton @Deprecated("Refactor code to instead rely on Lifecycle.") @@ -61,7 +66,7 @@ class WelcomeFragment : BaseFragment() { ): View? { val view = inflater.inflate(R.layout.welcome, container, false) - view.findViewById<HeaderBar>(R.id.header_bar).apply { + headerBar = view.findViewById<HeaderBar>(R.id.header_bar).apply { tunnelState = TunnelState.Disconnected } @@ -104,6 +109,7 @@ class WelcomeFragment : BaseFragment() { launchUpdateAccountNumberOnDeviceChanges() launchAdvanceToConnectViewOnExpiryExtended() launchExpiryPolling() + launchTunnelStateSubscription() } } @@ -128,6 +134,25 @@ class WelcomeFragment : BaseFragment() { } } + private fun CoroutineScope.launchTunnelStateSubscription() = launch { + serviceConnectionManager.connectionState + .flatMapLatest { state -> + if (state is ServiceConnectionState.ConnectedReady) { + callbackFlowFromNotifier( + state.container.connectionProxy.onStateChange + ) + } else { + emptyFlow() + } + } + .collect { state -> updateUiForTunnelState(state) } + } + + private fun updateUiForTunnelState(tunnelState: TunnelState) { + headerBar.tunnelState = tunnelState + sitePaymentButton.isEnabled = tunnelState is TunnelState.Disconnected + } + private fun updateAccountNumber(rawAccountNumber: String?) { val accountText = rawAccountNumber?.let { account -> addSpacesToAccountText(account) |
