aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-android/app
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-android/app')
-rw-r--r--packages/meshbay-android/app/src/main/kotlin/org/meshbay/client/MainActivity.kt14
1 files changed, 14 insertions, 0 deletions
diff --git a/packages/meshbay-android/app/src/main/kotlin/org/meshbay/client/MainActivity.kt b/packages/meshbay-android/app/src/main/kotlin/org/meshbay/client/MainActivity.kt
index 7ec81693..75ac0156 100644
--- a/packages/meshbay-android/app/src/main/kotlin/org/meshbay/client/MainActivity.kt
+++ b/packages/meshbay-android/app/src/main/kotlin/org/meshbay/client/MainActivity.kt
@@ -353,11 +353,25 @@ class MainActivity : Activity() {
* Tells the page when the network becomes unmetered or stops being: a
* backup waiting for Wi-Fi starts, one running on it stops. An event on the
* window, carrying the one boolean and nothing about the network.
+ *
+ * And when the phone moves to another network altogether, mobile data to
+ * Wi-Fi or back: a connection to a node may be running over the one just
+ * left, and the page checks it (transport.js onNetworkChange). Nothing
+ * about either network goes with it.
*/
private fun watchNetwork() {
val cm = getSystemService(android.net.ConnectivityManager::class.java)
var last: Boolean? = null
+ var current: android.net.Network? = null
val callback = object : android.net.ConnectivityManager.NetworkCallback() {
+ override fun onAvailable(n: android.net.Network) {
+ val moved = current != null && current != n
+ current = n
+ if (moved) runOnUiThread {
+ if (::web.isInitialized) web.evaluateJavascript(
+ "window.dispatchEvent(new Event('meshbay-default-network'));", null)
+ }
+ }
override fun onCapabilitiesChanged(n: android.net.Network, caps: android.net.NetworkCapabilities) = tell()
override fun onLost(n: android.net.Network) = tell()
private fun tell() {