Skip to content

Commit 7819a0c

Browse files
authored
Extract common code to update the Flow value
1 parent def5c4e commit 7819a0c

File tree

1 file changed

+16
-15
lines changed

1 file changed

+16
-15
lines changed

core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/util/ConnectivityManagerNetworkMonitor.kt

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -37,32 +37,33 @@ class ConnectivityManagerNetworkMonitor @Inject constructor(
3737
) : NetworkMonitor {
3838
override val isOnline: Flow<Boolean> = callbackFlow {
3939
val connectivityManager = context.getSystemService<ConnectivityManager>()
40-
?: run {
41-
channel.trySend(false)
42-
channel.close()
43-
return@callbackFlow
44-
}
40+
if (connectivityManager == null) {
41+
channel.trySend(false)
42+
channel.close()
43+
return@callbackFlow
44+
}
45+
46+
/**
47+
* Sends the latest connectivity status to the underlying channel.
48+
*/
49+
fun update() {
50+
channel.trySend(connectivityManager.isCurrentlyConnected())
51+
}
4552

4653
/**
4754
* The callback's methods are invoked on changes to *any* network, not just the active
4855
* network. So to check for network connectivity, one must query the active network of the
4956
* ConnectivityManager.
5057
*/
5158
val callback = object : NetworkCallback() {
52-
override fun onAvailable(network: Network) {
53-
channel.trySend(connectivityManager.isCurrentlyConnected())
54-
}
59+
override fun onAvailable(network: Network) = update()
5560

56-
override fun onLost(network: Network) {
57-
channel.trySend(connectivityManager.isCurrentlyConnected())
58-
}
61+
override fun onLost(network: Network) = update()
5962

6063
override fun onCapabilitiesChanged(
6164
network: Network,
6265
networkCapabilities: NetworkCapabilities,
63-
) {
64-
channel.trySend(connectivityManager.isCurrentlyConnected())
65-
}
66+
) = update()
6667
}
6768

6869
connectivityManager.registerNetworkCallback(
@@ -72,7 +73,7 @@ class ConnectivityManagerNetworkMonitor @Inject constructor(
7273
callback,
7374
)
7475

75-
channel.trySend(connectivityManager.isCurrentlyConnected())
76+
update()
7677

7778
awaitClose {
7879
connectivityManager.unregisterNetworkCallback(callback)

0 commit comments

Comments
 (0)