diff options
| author | David Göransson <david.goransson@mullvad.net> | 2025-02-20 10:59:54 +0100 |
|---|---|---|
| committer | David Göransson <david.goransson@mullvad.net> | 2025-02-25 12:02:00 +0100 |
| commit | 6e8b6594022c3b066c08cf70cb9dd2bac27b3c2f (patch) | |
| tree | c7c946def065f7cd1328d1516cabd47813f8120b /android/lib | |
| parent | e4724d612354963ea00f0796f2c5cdf11c15c9d7 (diff) | |
| download | mullvadvpn-6e8b6594022c3b066c08cf70cb9dd2bac27b3c2f.tar.xz mullvadvpn-6e8b6594022c3b066c08cf70cb9dd2bac27b3c2f.zip | |
Refactor defaultRawNetworkStateFlow
Diffstat (limited to 'android/lib')
| -rw-r--r-- | android/lib/talpid/src/main/kotlin/net/mullvad/talpid/util/ConnectivityManagerUtil.kt | 31 |
1 files changed, 13 insertions, 18 deletions
diff --git a/android/lib/talpid/src/main/kotlin/net/mullvad/talpid/util/ConnectivityManagerUtil.kt b/android/lib/talpid/src/main/kotlin/net/mullvad/talpid/util/ConnectivityManagerUtil.kt index fddaa6fb88..f3297a995e 100644 --- a/android/lib/talpid/src/main/kotlin/net/mullvad/talpid/util/ConnectivityManagerUtil.kt +++ b/android/lib/talpid/src/main/kotlin/net/mullvad/talpid/util/ConnectivityManagerUtil.kt @@ -109,24 +109,19 @@ fun ConnectivityManager.networkEvents(networkRequest: NetworkRequest): Flow<Netw } internal fun ConnectivityManager.defaultRawNetworkStateFlow(): Flow<RawNetworkState?> = - defaultNetworkEvents() - .scan( - null as RawNetworkState?, - { state, event -> - return@scan when (event) { - is NetworkEvent.Available -> RawNetworkState(network = event.network) - is NetworkEvent.BlockedStatusChanged -> - state?.copy(blockedStatus = event.blocked) - is NetworkEvent.CapabilitiesChanged -> - state?.copy(networkCapabilities = event.networkCapabilities) - is NetworkEvent.LinkPropertiesChanged -> - state?.copy(linkProperties = event.linkProperties) - is NetworkEvent.Losing -> state?.copy(maxMsToLive = event.maxMsToLive) - is NetworkEvent.Lost -> null - NetworkEvent.Unavailable -> null - } - }, - ) + defaultNetworkEvents().scan(null as RawNetworkState?) { state, event -> state.reduce(event) } + +private fun RawNetworkState?.reduce(event: NetworkEvent): RawNetworkState? = + when (event) { + is NetworkEvent.Available -> RawNetworkState(network = event.network) + is NetworkEvent.BlockedStatusChanged -> this?.copy(blockedStatus = event.blocked) + is NetworkEvent.CapabilitiesChanged -> + this?.copy(networkCapabilities = event.networkCapabilities) + is NetworkEvent.LinkPropertiesChanged -> this?.copy(linkProperties = event.linkProperties) + is NetworkEvent.Losing -> this?.copy(maxMsToLive = event.maxMsToLive) + is NetworkEvent.Lost -> null + NetworkEvent.Unavailable -> null + } sealed interface NetworkEvent { data class Available(val network: Network) : NetworkEvent |
