diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 67d619c..b543084 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -43,6 +43,10 @@ dependencies { implementation ("com.github.bumptech.glide:glide:4.15.1") kapt ("com.github.bumptech.glide:compiler:4.15.1") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0") + implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.5.1") + defaultLibrary() implementation(Dependencies.AndroidX.activity) diff --git a/app/src/main/java/ru/myitschool/work/api/ApiService.kt b/app/src/main/java/ru/myitschool/work/api/ApiService.kt index a4b433b..562c4f3 100644 --- a/app/src/main/java/ru/myitschool/work/api/ApiService.kt +++ b/app/src/main/java/ru/myitschool/work/api/ApiService.kt @@ -11,8 +11,8 @@ interface ApiService { @GET("api/{login}/auth") suspend fun authenticate( @Path("login") login: String, - @Header("Authorization") authorization: String - ): Response // Изменяем на UserAuthResponse + @Header("Authorization") authorization: String // Добавляем заголовок Authorization + ): Response // Возвращаем UserAuthResponse @GET("api/{login}/info") suspend fun getUserInfo(@Path("login") login: String): Response> @@ -25,11 +25,6 @@ interface ApiService { suspend fun getEmployeeInfo(@Path("login") login: String): Response } -// Модель данных для ответа аутентификации -data class UserAuthResponse( - val role: String // Добавляем поле для роли -) - // Модель данных для информации о сотруднике data class EmployeeData( val name: String, @@ -41,4 +36,9 @@ data class EmployeeData( data class ToggleAccessRequest( val login: String, val action: String // "block" или "unblock" +) + +// Модель данных для ответа аутентификации +data class UserAuthResponse( + val role: String // Добавляем поле для роли ) \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/ui/login/LoginFragment.kt b/app/src/main/java/ru/myitschool/work/ui/login/LoginFragment.kt index b64393c..4d85985 100644 --- a/app/src/main/java/ru/myitschool/work/ui/login/LoginFragment.kt +++ b/app/src/main/java/ru/myitschool/work/ui/login/LoginFragment.kt @@ -59,6 +59,7 @@ class LoginFragment : Fragment(R.layout.fragment_login) { performLogin(username, password) // Передаем пароль в метод performLogin } + // Изначально скрываем индикаторы binding.loading.visibleOrGone(false) binding.error.visibleOrGone(false) } diff --git a/app/src/main/java/utils/Extensions.kt b/app/src/main/java/utils/Extensions.kt new file mode 100644 index 0000000..529280f --- /dev/null +++ b/app/src/main/java/utils/Extensions.kt @@ -0,0 +1,24 @@ +package ru.myitschool.work.utils + +import android.view.View +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.repeatOnLifecycle +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.collect +import kotlinx.coroutines.launch + +// Функция для сбора данных из Flow, когда жизненный цикл находится в состоянии STARTED +fun Flow.collectWhenStarted(lifecycleOwner: LifecycleOwner, collector: (T) -> Unit) { + lifecycleOwner.lifecycleScope.launch { + lifecycleOwner.lifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) { + collect { value -> collector(value) } + } + } +} + +// Функция для управления видимостью View +fun View?.visibleOrGone(isVisible: Boolean) { + this?.visibility = if (isVisible) View.VISIBLE else View.GONE +} \ No newline at end of file