From f8bc61d090e9ef2db6befaf82a650e71759c99ee Mon Sep 17 00:00:00 2001 From: yastruckov Date: Wed, 19 Feb 2025 18:45:02 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=82=D0=B5=D0=BA=D1=81=D1=82?= =?UTF-8?q?=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B8=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=20=D0=BD=D0=B5=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=D1=8C?= =?UTF-8?q?=D0=BD=D1=8B=D1=85=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../work/data/login/LoginNetworkDataSource.kt | 11 +++++++++-- .../java/ru/myitschool/work/ui/login/LoginFragment.kt | 2 ++ .../ru/myitschool/work/ui/login/LoginViewModel.kt | 5 +++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/ru/myitschool/work/data/login/LoginNetworkDataSource.kt b/app/src/main/java/ru/myitschool/work/data/login/LoginNetworkDataSource.kt index a2b92f2..42cf0da 100644 --- a/app/src/main/java/ru/myitschool/work/data/login/LoginNetworkDataSource.kt +++ b/app/src/main/java/ru/myitschool/work/data/login/LoginNetworkDataSource.kt @@ -1,5 +1,6 @@ package ru.myitschool.work.data.login +import android.content.Context import io.ktor.client.call.body import io.ktor.client.request.basicAuth import io.ktor.client.request.post @@ -8,10 +9,13 @@ import io.ktor.http.HttpStatusCode import io.ktor.http.headers import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext +import ru.myitschool.work.R import ru.myitschool.work.core.Constants import ru.myitschool.work.utils.NetworkModule -class LoginNetworkDataSource { +class LoginNetworkDataSource( + private val context: Context +) { private val client = NetworkModule.httpClient suspend fun login(username: String, password: String):Result = withContext(Dispatchers.IO){ runCatching { @@ -21,7 +25,10 @@ class LoginNetworkDataSource { basicAuth(username, password) } } - if (result.status != HttpStatusCode.OK) { + if(result.status == HttpStatusCode.Unauthorized){ + error(context.getString(R.string.login_unauthorized)) + } + else if (result.status != HttpStatusCode.OK) { error("Status ${result.status}") } println(result.bodyAsText()) 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 89b273a..ad3ba5c 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 @@ -49,8 +49,10 @@ class LoginFragment : Fragment(R.layout.fragment_login) { when(state){ is LoginViewModel.State.Error -> { error.visibility = View.VISIBLE + error.text = state.message loading.visibility = View.GONE username.isEnabled = true + } is LoginViewModel.State.Idle -> { loading.visibility = View.GONE diff --git a/app/src/main/java/ru/myitschool/work/ui/login/LoginViewModel.kt b/app/src/main/java/ru/myitschool/work/ui/login/LoginViewModel.kt index 75a34cc..eb4b477 100644 --- a/app/src/main/java/ru/myitschool/work/ui/login/LoginViewModel.kt +++ b/app/src/main/java/ru/myitschool/work/ui/login/LoginViewModel.kt @@ -31,7 +31,6 @@ class LoginViewModel( if(username != "" && password != "") login(username, password) } - } sealed class State { @@ -63,7 +62,9 @@ class LoginViewModel( val Factory: ViewModelProvider.Factory = object : ViewModelProvider.Factory { override fun create(modelClass: Class, extras: CreationExtras): T { val repoImpl = LoginRepoImpl( - networkDataSource = LoginNetworkDataSource() + networkDataSource = LoginNetworkDataSource( + context = extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY] as Application + ) ) val useCase = LoginUseCase(repoImpl)