Skip to content

Commit 7bd5b75

Browse files
committed
add debounce for onCapabilitiesChanged
Signed-off-by: alperozturk96 <alper_ozturk@proton.me>
1 parent 2cfbb1a commit 7bd5b75

1 file changed

Lines changed: 18 additions & 6 deletions

File tree

app/src/main/java/com/nextcloud/client/network/ConnectivityServiceImpl.kt

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import android.net.ConnectivityManager
1111
import android.net.Network
1212
import android.net.NetworkCapabilities
1313
import android.os.Build
14+
import android.os.SystemClock
1415
import com.nextcloud.client.account.UserAccountManager
1516
import com.nextcloud.operations.GetMethod
1617
import com.owncloud.android.lib.common.utils.Log_OC
@@ -40,7 +41,6 @@ class ConnectivityServiceImpl(
4041
private const val TAG = "ConnectivityServiceImpl"
4142
private const val CONNECTIVITY_CHECK_ROUTE = "/index.php/204"
4243

43-
private var lastCapabilityCheckMs = 0L
4444
private val CAPABILITY_CHANGE_DEBOUNCE = 15.seconds
4545
}
4646

@@ -50,6 +50,7 @@ class ConnectivityServiceImpl(
5050
private var notifyJob: Job? = null
5151
private val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
5252
private val listeners = mutableSetOf<NetworkChangeListener>()
53+
private var lastCapabilityCheckMs: Long? = null
5354

5455
@Volatile
5556
private var currentConnectivity: Connectivity = Connectivity.DISCONNECTED
@@ -64,12 +65,12 @@ class ConnectivityServiceImpl(
6465
}
6566

6667
override fun onCapabilitiesChanged(network: Network, networkCapabilities: NetworkCapabilities) {
67-
val now = System.currentTimeMillis()
68-
if (now - lastCapabilityCheckMs >= CAPABILITY_CHANGE_DEBOUNCE.inWholeMilliseconds) {
69-
Log_OC.d(TAG, "resolving network capabilities to compare")
70-
lastCapabilityCheckMs = now
71-
updateConnectivity()
68+
if (!shouldHandleCapabilityChange()) {
69+
return
7270
}
71+
72+
Log_OC.d(TAG, "resolving network capabilities to compare")
73+
updateConnectivity()
7374
}
7475
}
7576
// endregion
@@ -203,6 +204,17 @@ class ConnectivityServiceImpl(
203204
// endregion
204205

205206
// region private methods
207+
private fun shouldHandleCapabilityChange(): Boolean {
208+
val now = SystemClock.elapsedRealtime()
209+
val last = lastCapabilityCheckMs
210+
if (last != null && now - last < CAPABILITY_CHANGE_DEBOUNCE.inWholeMilliseconds) {
211+
return false
212+
}
213+
214+
lastCapabilityCheckMs = now
215+
return true
216+
}
217+
206218
private fun notifyListeners() {
207219
if (listeners.isEmpty()) {
208220
return

0 commit comments

Comments
 (0)