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)