Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Добавил утилиты для дебаунса и проверки интернета #12

Merged
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package ru.practicum.android.diploma.util

import android.view.View
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch

class DebounceExtension(private val delayMillis: Long, private val action: () -> Unit) {
G-dev-ui marked this conversation as resolved.
Show resolved Hide resolved
private var debounceJob: Job? = null
fun debounce() {
debounceJob?.cancel()
debounceJob = CoroutineScope(Dispatchers.Main).launch {
delay(delayMillis)
action.invoke()
}
}
}

fun View.setDebouncedClickListener(delayMillis: Long = NumericConstants.HALF_SECOND, onClick: () -> Unit) {
G-dev-ui marked this conversation as resolved.
Show resolved Hide resolved
var debounceJob: Job? = null
setOnClickListener {
debounceJob?.cancel()
debounceJob = CoroutineScope(Dispatchers.Main).launch {
delay(delayMillis)
onClick()
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@

package ru.practicum.android.diploma.util

import android.content.Context
import android.net.ConnectivityManager
import android.net.NetworkCapabilities

fun isInternetAvailable(context: Context): Boolean {
val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val capabilities = connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork)
var result = false
if (capabilities != null) {
result = when {
capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true
capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> true
capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) -> true
else -> false
}
}
return result
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package ru.practicum.android.diploma.util

object NumericConstants {
G-dev-ui marked this conversation as resolved.
Show resolved Hide resolved
const val HALF_SECOND = 500L
const val ONE_SECOND = 1000L
G-dev-ui marked this conversation as resolved.
Show resolved Hide resolved
const val TWO_SECONDS = 2000L
}
Loading