From 53da1bad9a9376e36429882cf816589c034bfc48 Mon Sep 17 00:00:00 2001 From: Elchin Gasymov Date: Tue, 6 Aug 2024 11:45:18 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20=D0=BF?= =?UTF-8?q?=D0=BE=D1=81=D0=BB=D0=B5=20=D0=BF=D0=B5=D1=80=D0=B2=D0=BE=D0=B3?= =?UTF-8?q?=D0=BE=20=D1=80=D0=B5=D0=B2=D1=8C=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../diploma/data/dto/{Responce.kt => Response.kt} | 2 +- .../android/diploma/data/network/HHApiService.kt | 6 +++--- .../android/diploma/data/network/NetworkClient.kt | 4 ++-- .../diploma/data/network/RetrofitNetworkClient.kt | 12 ++++++------ .../android/diploma/ui/root/RootActivity.kt | 15 ++------------- .../android/diploma/util/DebounceExtension.kt | 11 +++++++---- gradle/libs.versions.toml | 1 - 7 files changed, 21 insertions(+), 30 deletions(-) rename app/src/main/java/ru/practicum/android/diploma/data/dto/{Responce.kt => Response.kt} (93%) diff --git a/app/src/main/java/ru/practicum/android/diploma/data/dto/Responce.kt b/app/src/main/java/ru/practicum/android/diploma/data/dto/Response.kt similarity index 93% rename from app/src/main/java/ru/practicum/android/diploma/data/dto/Responce.kt rename to app/src/main/java/ru/practicum/android/diploma/data/dto/Response.kt index d8013d9066..45dd655c96 100644 --- a/app/src/main/java/ru/practicum/android/diploma/data/dto/Responce.kt +++ b/app/src/main/java/ru/practicum/android/diploma/data/dto/Response.kt @@ -5,6 +5,6 @@ const val RESULT_CODE_SUCCESS = 200 const val RESULT_CODE_BAD_REQUEST = 400 const val RESULT_CODE_SERVER_ERROR = 500 -class Responce { +class Response { var resultCode = 0 } diff --git a/app/src/main/java/ru/practicum/android/diploma/data/network/HHApiService.kt b/app/src/main/java/ru/practicum/android/diploma/data/network/HHApiService.kt index 61c45fde27..539330c583 100644 --- a/app/src/main/java/ru/practicum/android/diploma/data/network/HHApiService.kt +++ b/app/src/main/java/ru/practicum/android/diploma/data/network/HHApiService.kt @@ -5,7 +5,7 @@ import retrofit2.http.Headers import retrofit2.http.Path import retrofit2.http.QueryMap import ru.practicum.android.diploma.BuildConfig -import ru.practicum.android.diploma.data.dto.Responce +import ru.practicum.android.diploma.data.dto.Response const val USER_AGENT_AUTHORIZATION = "Authorization: Bearer ${BuildConfig.HH_ACCESS_TOKEN}" const val USER_AGENT_APP_NAME = "HH-User-Agent: CareerHub (e.gasymov@hh.ru)" @@ -13,9 +13,9 @@ const val USER_AGENT_APP_NAME = "HH-User-Agent: CareerHub (e.gasymov@hh.ru)" interface HHApiService { @Headers(USER_AGENT_AUTHORIZATION, USER_AGENT_APP_NAME) @GET("vacancies/{vacancy_id}") - suspend fun getVacancy(@Path("vacancy_id") id: Int): Responce + suspend fun getVacancy(@Path("vacancy_id") id: Int): Response @Headers(USER_AGENT_AUTHORIZATION, USER_AGENT_APP_NAME) @GET("vacancies") - suspend fun searchVacancies(@QueryMap options: Map): Responce + suspend fun searchVacancies(@QueryMap options: Map): Response } diff --git a/app/src/main/java/ru/practicum/android/diploma/data/network/NetworkClient.kt b/app/src/main/java/ru/practicum/android/diploma/data/network/NetworkClient.kt index 0a3a0bd9b2..e8345078c1 100644 --- a/app/src/main/java/ru/practicum/android/diploma/data/network/NetworkClient.kt +++ b/app/src/main/java/ru/practicum/android/diploma/data/network/NetworkClient.kt @@ -1,7 +1,7 @@ package ru.practicum.android.diploma.data.network -import ru.practicum.android.diploma.data.dto.Responce +import ru.practicum.android.diploma.data.dto.Response interface NetworkClient { - suspend fun doRequest(dto: Any): Responce + suspend fun doRequest(dto: Any): Response } diff --git a/app/src/main/java/ru/practicum/android/diploma/data/network/RetrofitNetworkClient.kt b/app/src/main/java/ru/practicum/android/diploma/data/network/RetrofitNetworkClient.kt index a70fd915c9..c9d3a6f689 100644 --- a/app/src/main/java/ru/practicum/android/diploma/data/network/RetrofitNetworkClient.kt +++ b/app/src/main/java/ru/practicum/android/diploma/data/network/RetrofitNetworkClient.kt @@ -8,7 +8,7 @@ import ru.practicum.android.diploma.data.dto.RESULT_CODE_BAD_REQUEST import ru.practicum.android.diploma.data.dto.RESULT_CODE_NO_INTERNET import ru.practicum.android.diploma.data.dto.RESULT_CODE_SERVER_ERROR import ru.practicum.android.diploma.data.dto.RESULT_CODE_SUCCESS -import ru.practicum.android.diploma.data.dto.Responce +import ru.practicum.android.diploma.data.dto.Response import ru.practicum.android.diploma.data.dto.SearchRequest import ru.practicum.android.diploma.data.dto.VacancyRequest import ru.practicum.android.diploma.util.isInternetAvailable @@ -18,14 +18,14 @@ class RetrofitNetworkClient( private val context: Context ) : NetworkClient { - override suspend fun doRequest(dto: Any): Responce { + override suspend fun doRequest(dto: Any): Response { if (!isInternetAvailable(context)) { - return Responce().apply { resultCode = RESULT_CODE_NO_INTERNET } + return Response().apply { resultCode = RESULT_CODE_NO_INTERNET } } return getResponce(dto = dto) } - private suspend fun getResponce(dto: Any): Responce { + private suspend fun getResponce(dto: Any): Response { return withContext(Dispatchers.IO) { try { when (dto) { @@ -40,13 +40,13 @@ class RetrofitNetworkClient( } else -> { - Responce().apply { resultCode = RESULT_CODE_BAD_REQUEST } + Response().apply { resultCode = RESULT_CODE_BAD_REQUEST } } } } catch (e: HttpException) { println("RetrofitClient error code: ${e.code()} message: ${e.message}") - Responce().apply { resultCode = RESULT_CODE_SERVER_ERROR } + Response().apply { resultCode = RESULT_CODE_SERVER_ERROR } } } } diff --git a/app/src/main/java/ru/practicum/android/diploma/ui/root/RootActivity.kt b/app/src/main/java/ru/practicum/android/diploma/ui/root/RootActivity.kt index 9509fcf6e6..70e855005c 100644 --- a/app/src/main/java/ru/practicum/android/diploma/ui/root/RootActivity.kt +++ b/app/src/main/java/ru/practicum/android/diploma/ui/root/RootActivity.kt @@ -27,21 +27,10 @@ class RootActivity : AppCompatActivity() { navController.addOnDestinationChangedListener { _, destination, _ -> when (destination.id) { - R.id.mainFragment -> { + R.id.mainFragment, R.id.favoriteFragment, R.id.teamFragment -> binding.bottomNavigationView.isVisible = true - } - R.id.favoriteFragment -> { - binding.bottomNavigationView.isVisible = true - } - - R.id.teamFragment -> { - binding.bottomNavigationView.isVisible = true - } - - else -> { - binding.bottomNavigationView.isVisible = false - } + else -> binding.bottomNavigationView.isVisible = false } } 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 d0e2479f70..1d5d59a4c5 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 @@ -2,7 +2,6 @@ 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 @@ -10,15 +9,18 @@ import ru.practicum.android.diploma.util.DebounceExtension.Companion.HALF_SECOND class DebounceExtension( private val delayMillis: Long, - private val action: () -> Unit + private val action: () -> Unit, + private val scope: CoroutineScope ) { companion object { const val HALF_SECOND = 500L } + private var debounceJob: Job? = null + fun debounce() { debounceJob?.cancel() - debounceJob = CoroutineScope(Dispatchers.Main).launch { + debounceJob = scope.launch { delay(delayMillis) action.invoke() } @@ -26,13 +28,14 @@ class DebounceExtension( } fun View.setDebouncedClickListener( + scope: CoroutineScope, delayMillis: Long = HALF_SECOND, onClick: () -> Unit ) { var debounceJob: Job? = null setOnClickListener { debounceJob?.cancel() - debounceJob = CoroutineScope(Dispatchers.Main).launch { + debounceJob = scope.launch { delay(delayMillis) onClick() } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 36060caa43..bd4aad4005 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -34,7 +34,6 @@ koin-android = { module = "io.insert-koin:koin-android", version.ref = "koinAndr kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "kotlinxCoroutinesAndroid" } navigation-fragment-ktx = { module = "androidx.navigation:navigation-fragment-ktx", version.ref = "navigationFragmentKtx" } navigation-ui-ktx = { module = "androidx.navigation:navigation-ui-ktx", version.ref = "navigationFragmentKtx" } -retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" } retrofit-v290 = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofitVersion" } room-compiler = { module = "androidx.room:room-compiler", version.ref = "roomCompiler" } room-ktx = { module = "androidx.room:room-ktx", version.ref = "roomCompiler" }