diff options
| author | Christophe Besson <cbesson@gmail.com> | 2026-10-17 13:29:48 +0200 |
|---|---|---|
| committer | Christophe Besson <cbesson@gmail.com> | 2026-10-17 13:29:48 +0200 |
| commit | 0030b5ce5a11ec564a9e3b3fc1f7f4342996bad3 (patch) | |
| tree | 085d6934a74cec0ebfd13ba6015022412362271c /packages/meshbay-android/app/src/main/kotlin/org | |
| parent | 165847da1ca3c3be627b5968bc77e9a11b3385cb (diff) | |
| download | meshbay-0030b5ce5a11ec564a9e3b3fc1f7f4342996bad3.tar.gz | |
feat(android): tell the page when the phone changes network
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-android/app/src/main/kotlin/org')
| -rw-r--r-- | packages/meshbay-android/app/src/main/kotlin/org/meshbay/client/MainActivity.kt | 14 |
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() { |