From 8c747da4d3abb5191f16d8283555fadefcc6a451 Mon Sep 17 00:00:00 2001 From: G-dev-ui Date: Fri, 2 Aug 2024 21:51:49 +0300 Subject: [PATCH 1/4] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D1=83=D1=82=D0=B8=D0=BB=D0=B8=D1=82=D1=8B=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=B4=D0=B5=D0=B1=D0=B0=D1=83=D0=BD=D1=81=D0=B0=20?= =?UTF-8?q?=D0=B8=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B8=20?= =?UTF-8?q?=D0=B8=D0=BD=D1=82=D0=B5=D1=80=D0=BD=D0=B5=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../android/diploma/util/DebounceExtension.kt | 30 +++++++++++++++++++ .../android/diploma/util/NetworkUtils.kt | 24 +++++++++++++++ .../android/diploma/util/NumericConstants.kt | 7 +++++ 3 files changed, 61 insertions(+) create mode 100644 app/src/main/java/ru/practicum/android/diploma/util/DebounceExtension.kt create mode 100644 app/src/main/java/ru/practicum/android/diploma/util/NetworkUtils.kt create mode 100644 app/src/main/java/ru/practicum/android/diploma/util/NumericConstants.kt diff --git a/app/src/main/java/ru/practicum/android/diploma/util/DebounceExtension.kt b/app/src/main/java/ru/practicum/android/diploma/util/DebounceExtension.kt new file mode 100644 index 0000000000..338294dce5 --- /dev/null +++ b/app/src/main/java/ru/practicum/android/diploma/util/DebounceExtension.kt @@ -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) { + 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) { + var debounceJob: Job? = null + setOnClickListener { + debounceJob?.cancel() + debounceJob = CoroutineScope(Dispatchers.Main).launch { + delay(delayMillis) + onClick() + } + } +} diff --git a/app/src/main/java/ru/practicum/android/diploma/util/NetworkUtils.kt b/app/src/main/java/ru/practicum/android/diploma/util/NetworkUtils.kt new file mode 100644 index 0000000000..6dabbf653d --- /dev/null +++ b/app/src/main/java/ru/practicum/android/diploma/util/NetworkUtils.kt @@ -0,0 +1,24 @@ + +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 + } + + + diff --git a/app/src/main/java/ru/practicum/android/diploma/util/NumericConstants.kt b/app/src/main/java/ru/practicum/android/diploma/util/NumericConstants.kt new file mode 100644 index 0000000000..44eac8686a --- /dev/null +++ b/app/src/main/java/ru/practicum/android/diploma/util/NumericConstants.kt @@ -0,0 +1,7 @@ +package ru.practicum.android.diploma.util + +object NumericConstants { + const val HALF_SECOND = 500L + const val ONE_SECOND = 1000L + const val TWO_SECONDS = 2000L +} From af5aed36f4585763c0325b1f8eaad00f707803af Mon Sep 17 00:00:00 2001 From: G-dev-ui Date: Fri, 2 Aug 2024 22:00:50 +0300 Subject: [PATCH 2/4] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D1=83=D1=82=D0=B8=D0=BB=D0=B8=D1=82=D1=8B=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=B4=D0=B5=D0=B1=D0=B0=D1=83=D0=BD=D1=81=D0=B0=20?= =?UTF-8?q?=D0=B8=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B8=20?= =?UTF-8?q?=D0=B8=D0=BD=D1=82=D0=B5=D1=80=D0=BD=D0=B5=D1=82=D0=B0(=D0=98?= =?UTF-8?q?=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=BE=D1=82=D1=81?= =?UTF-8?q?=D1=82=D1=83=D0=BF=D1=8B)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../android/diploma/util/NetworkUtils.kt | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/ru/practicum/android/diploma/util/NetworkUtils.kt b/app/src/main/java/ru/practicum/android/diploma/util/NetworkUtils.kt index 6dabbf653d..15c3e5e800 100644 --- a/app/src/main/java/ru/practicum/android/diploma/util/NetworkUtils.kt +++ b/app/src/main/java/ru/practicum/android/diploma/util/NetworkUtils.kt @@ -5,20 +5,17 @@ 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 - } +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 } - - - + return result +} From 0487daf4be17628d8ce8d51a6bcb2a52fef9e410 Mon Sep 17 00:00:00 2001 From: G-dev-ui Date: Sat, 3 Aug 2024 10:50:14 +0300 Subject: [PATCH 3/4] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D1=83=D1=82=D0=B8=D0=BB=D0=B8=D1=82=D1=8B=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=B4=D0=B5=D0=B1=D0=B0=D1=83=D0=BD=D1=81=D0=B0=20?= =?UTF-8?q?=D0=B8=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B8=20?= =?UTF-8?q?=D0=B8=D0=BD=D1=82=D0=B5=D1=80=D0=BD=D0=B5=D1=82=D0=B0(=D0=98?= =?UTF-8?q?=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=B2?= =?UTF-8?q?=D1=81=D0=B5=20=D0=B7=D0=B0=D0=BC=D0=B5=D1=87=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../android/diploma/util/DebounceExtension.kt | 14 ++++++++++++-- .../android/diploma/util/NumericConstants.kt | 7 ------- 2 files changed, 12 insertions(+), 9 deletions(-) delete mode 100644 app/src/main/java/ru/practicum/android/diploma/util/NumericConstants.kt diff --git a/app/src/main/java/ru/practicum/android/diploma/util/DebounceExtension.kt b/app/src/main/java/ru/practicum/android/diploma/util/DebounceExtension.kt index 338294dce5..a084a72498 100644 --- a/app/src/main/java/ru/practicum/android/diploma/util/DebounceExtension.kt +++ b/app/src/main/java/ru/practicum/android/diploma/util/DebounceExtension.kt @@ -6,8 +6,15 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job import kotlinx.coroutines.delay import kotlinx.coroutines.launch +import ru.practicum.android.diploma.util.DebounceExtension.Companion.HALF_SECOND -class DebounceExtension(private val delayMillis: Long, private val action: () -> Unit) { +class DebounceExtension( + private val delayMillis: Long, + private val action: () -> Unit +) { + companion object{ + const val HALF_SECOND = 500L + } private var debounceJob: Job? = null fun debounce() { debounceJob?.cancel() @@ -18,7 +25,10 @@ class DebounceExtension(private val delayMillis: Long, private val action: () -> } } -fun View.setDebouncedClickListener(delayMillis: Long = NumericConstants.HALF_SECOND, onClick: () -> Unit) { +fun View.setDebouncedClickListener( + delayMillis: Long = HALF_SECOND, + onClick: () -> Unit +) { var debounceJob: Job? = null setOnClickListener { debounceJob?.cancel() diff --git a/app/src/main/java/ru/practicum/android/diploma/util/NumericConstants.kt b/app/src/main/java/ru/practicum/android/diploma/util/NumericConstants.kt deleted file mode 100644 index 44eac8686a..0000000000 --- a/app/src/main/java/ru/practicum/android/diploma/util/NumericConstants.kt +++ /dev/null @@ -1,7 +0,0 @@ -package ru.practicum.android.diploma.util - -object NumericConstants { - const val HALF_SECOND = 500L - const val ONE_SECOND = 1000L - const val TWO_SECONDS = 2000L -} From d56d68d8730da33603ceb3f72ac7671753dc833c Mon Sep 17 00:00:00 2001 From: G-dev-ui Date: Sat, 3 Aug 2024 10:56:24 +0300 Subject: [PATCH 4/4] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D1=83=D1=82=D0=B8=D0=BB=D0=B8=D1=82=D1=8B=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=B4=D0=B5=D0=B1=D0=B0=D1=83=D0=BD=D1=81=D0=B0=20?= =?UTF-8?q?=D0=B8=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B8=20?= =?UTF-8?q?=D0=B8=D0=BD=D1=82=D0=B5=D1=80=D0=BD=D0=B5=D1=82=D0=B0(=D0=98?= =?UTF-8?q?=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=B2?= =?UTF-8?q?=D1=81=D0=B5=20=D0=B7=D0=B0=D0=BC=D0=B5=D1=87=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/ru/practicum/android/diploma/util/DebounceExtension.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/ru/practicum/android/diploma/util/DebounceExtension.kt b/app/src/main/java/ru/practicum/android/diploma/util/DebounceExtension.kt index a084a72498..d0e2479f70 100644 --- a/app/src/main/java/ru/practicum/android/diploma/util/DebounceExtension.kt +++ b/app/src/main/java/ru/practicum/android/diploma/util/DebounceExtension.kt @@ -12,7 +12,7 @@ class DebounceExtension( private val delayMillis: Long, private val action: () -> Unit ) { - companion object{ + companion object { const val HALF_SECOND = 500L } private var debounceJob: Job? = null