diff --git a/app/src/main/java/com/displaynone/acss/components/acs/models/gate/GateServiceST.kt b/app/src/main/java/com/displaynone/acss/components/acs/models/gate/GateServiceST.kt index e5a2805..7bb756c 100644 --- a/app/src/main/java/com/displaynone/acss/components/acs/models/gate/GateServiceST.kt +++ b/app/src/main/java/com/displaynone/acss/components/acs/models/gate/GateServiceST.kt @@ -22,7 +22,6 @@ class GateServiceST { } private val gateRepository: GateRepository = GateRepository() suspend fun openDoor(code: String): Result { - Log.d("1234", UserServiceST.getInstance().getTokenPair().accessToken) - return gateRepository.openDoor(UserServiceST.getInstance().getTokenPair().accessToken, code = code) + return gateRepository.openDoor(UserServiceST.getInstance().getTokenPair()?.accessToken!!, code = code) } } \ No newline at end of file diff --git a/app/src/main/java/com/displaynone/acss/components/acs/models/visit/VisitServiceST.kt b/app/src/main/java/com/displaynone/acss/components/acs/models/visit/VisitServiceST.kt index 927d449..eed03b7 100644 --- a/app/src/main/java/com/displaynone/acss/components/acs/models/visit/VisitServiceST.kt +++ b/app/src/main/java/com/displaynone/acss/components/acs/models/visit/VisitServiceST.kt @@ -28,7 +28,7 @@ class VisitServiceST { if (!UserServiceST.getInstance().hasTokens()) { throw RuntimeException("access token is null") } - return visitRepository.getLastVisitsByLogin(pageNum, pageSize, UserServiceST.getInstance().getTokenPair().accessToken, login).map { pagingDto -> pagingDto.content } + return visitRepository.getLastVisitsByLogin(pageNum, pageSize, UserServiceST.getInstance().getTokenPair()!!.accessToken, login).map { pagingDto -> pagingDto.content } } suspend fun getMyLastVisits(pageNum: Int, pageSize: Int): Result> { @@ -39,7 +39,7 @@ class VisitServiceST { return visitRepository.getMyLastVisits( pageNum = pageNum, pageSize = pageSize, - token = UserServiceST.getInstance().getTokenPair().accessToken + token = UserServiceST.getInstance().getTokenPair()!!.accessToken ).map { pagingDto -> pagingDto.content } } } \ No newline at end of file diff --git a/app/src/main/java/com/displaynone/acss/components/auth/models/user/UserServiceST.kt b/app/src/main/java/com/displaynone/acss/components/auth/models/user/UserServiceST.kt index 4064041..6bba011 100644 --- a/app/src/main/java/com/displaynone/acss/components/auth/models/user/UserServiceST.kt +++ b/app/src/main/java/com/displaynone/acss/components/auth/models/user/UserServiceST.kt @@ -41,8 +41,8 @@ class UserServiceST( } } } - fun getTokenPair(): AuthTokenPair { - return tokenManager.authTokenPair!! + fun getTokenPair(): AuthTokenPair? { + return tokenManager.authTokenPair } fun hasTokens(): Boolean { return tokenManager.hasTokens() diff --git a/app/src/main/java/com/displaynone/acss/components/auth/models/user/repository/UserRepository.kt b/app/src/main/java/com/displaynone/acss/components/auth/models/user/repository/UserRepository.kt index e251dd5..6e482c5 100644 --- a/app/src/main/java/com/displaynone/acss/components/auth/models/user/repository/UserRepository.kt +++ b/app/src/main/java/com/displaynone/acss/components/auth/models/user/repository/UserRepository.kt @@ -1,6 +1,7 @@ package com.displaynone.acss.components.auth.models.user.repository import android.util.Log +import com.bumptech.glide.load.HttpException import com.displaynone.acss.components.auth.models.AuthTokenPair import com.displaynone.acss.config.Constants.serverUrl import com.displaynone.acss.config.Network @@ -45,16 +46,14 @@ class UserRepository( setBody(UserLoginDto(login, password)) } if (result.status != HttpStatusCode.OK) { - error("Status ${result.status}: ${result.body()}") + error(result.status) } // val gson = Gson() // val tokenPair = gson.fromJson(result.bodyAsText(), AuthTokenPair::class.java) Log.d("UserRepository", result.bodyAsText()) // result.body() val tokenPair = Json.decodeFromString(result.bodyAsText()) - Result.success(tokenPair) - }.getOrElse { exception -> - Result.failure(exception) + tokenPair } } suspend fun openDoor(token: String, code: String): Result = withContext(Dispatchers.IO){ diff --git a/app/src/main/java/com/displaynone/acss/components/init/models/InitServiceST.kt b/app/src/main/java/com/displaynone/acss/components/init/models/InitServiceST.kt index 82126c5..fcb3b57 100644 --- a/app/src/main/java/com/displaynone/acss/components/init/models/InitServiceST.kt +++ b/app/src/main/java/com/displaynone/acss/components/init/models/InitServiceST.kt @@ -20,6 +20,6 @@ class InitServiceST { } } suspend fun ping(): Result { - return initRepository.ping(UserServiceST.getInstance().getTokenPair().accessToken) + return initRepository.ping() } } \ No newline at end of file diff --git a/app/src/main/java/com/displaynone/acss/components/init/models/repository/InitRepository.kt b/app/src/main/java/com/displaynone/acss/components/init/models/repository/InitRepository.kt index fc3efdd..4a2d84a 100644 --- a/app/src/main/java/com/displaynone/acss/components/init/models/repository/InitRepository.kt +++ b/app/src/main/java/com/displaynone/acss/components/init/models/repository/InitRepository.kt @@ -16,13 +16,10 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext class InitRepository { - suspend fun ping(token: String): Result = withContext( + suspend fun ping(): Result = withContext( Dispatchers.IO){ runCatching { val result = Network.client.get("$serverUrl/api/utils/ping") { - headers { - append(HttpHeaders.Authorization, "Bearer $token") - } } result.status == HttpStatusCode.OK diff --git a/app/src/main/java/com/displaynone/acss/ui/auth/AuthFragment.kt b/app/src/main/java/com/displaynone/acss/ui/auth/AuthFragment.kt index bf2aef0..a708b51 100644 --- a/app/src/main/java/com/displaynone/acss/ui/auth/AuthFragment.kt +++ b/app/src/main/java/com/displaynone/acss/ui/auth/AuthFragment.kt @@ -28,17 +28,16 @@ class AuthFragment: Fragment(R.layout.fragment_auth) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) _binding = FragmentAuthBinding.bind(view) - setupLoginButton() viewModel.action.collectWithLifecycle(this) { action -> if (action is Action.GotoProfile) { blockLoginButton() // FIXME() При двойном нажатии вылетает с ошибкой navigateTo(view, R.id.action_authFragment_to_profileFragment) } } - viewModel.errorState.collectWithLifecycle(this) { errorMessage -> - errorMessage?.let { + viewModel.errorState.collectWithLifecycle(this) { errorStatus -> + errorStatus?.let { Toast.makeText(requireContext(), it, Toast.LENGTH_SHORT).show() - binding.errorTitle.text = errorMessage + binding.errorTitle.text = errorStatus binding.errorTitle.visibility = View.VISIBLE } } @@ -49,49 +48,6 @@ class AuthFragment: Fragment(R.layout.fragment_auth) { private fun blockLoginButton() { binding.next.isEnabled = false } - - private fun setupLoginButton() { - binding.login.addTextChangedListener(object : TextWatcher { - override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {} - @SuppressLint("ResourceAsColor") - override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { - binding.error.visibility = View.GONE -// val username = s.toString() -// val valid = isUsernameValid(username) -// -// if (valid) { -// binding.hint.visibility = View.INVISIBLE -// }else{ -// binding.login.error = getString(R.string.login_hint) -// } -// binding.hint.visibility = if(valid) View.INVISIBLE else View.VISIBLE -// binding.next.isEnabled = valid - - } - - override fun afterTextChanged(s: Editable?) {} - }) -// binding.password.addTextChangedListener(object : TextWatcher { -// override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {} -// @SuppressLint("ResourceAsColor") -// override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { -// binding.error.visibility = View.GONE -// val username = s.toString() -// val valid = isPasswordValid(username) -// -// binding.hint.visibility = if(valid) View.INVISIBLE else View.VISIBLE -// if (!valid){ -// val errorMessage = getPasswordValidError(s.toString()) -// binding.password.setError(errorMessage) -// } -// binding.next.isEnabled = valid -// val color = if (valid) R.color.primary else R.color.secondary -// binding.next.backgroundTintList = ContextCompat.getColorStateList(requireContext(), color) -// } -// -// override fun afterTextChanged(s: Editable?) {} -// }) - } private fun getPasswordValidError(password: String): String { if (password.length < 8) { return "LenError" diff --git a/app/src/main/java/com/displaynone/acss/ui/auth/AuthViewModel.kt b/app/src/main/java/com/displaynone/acss/ui/auth/AuthViewModel.kt index b7a0433..b653f2a 100644 --- a/app/src/main/java/com/displaynone/acss/ui/auth/AuthViewModel.kt +++ b/app/src/main/java/com/displaynone/acss/ui/auth/AuthViewModel.kt @@ -12,6 +12,7 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.receiveAsFlow import kotlinx.coroutines.launch +import kotlin.reflect.typeOf class AuthViewModel(): ViewModel() { private val _action = Channel( @@ -28,6 +29,7 @@ class AuthViewModel(): ViewModel() { UserServiceST.getInstance().login(login, password).fold( onSuccess = { openProfile() }, onFailure = { error -> + Log.d("AuthViewModel", error::class.simpleName.toString()) Log.e("AuthViewModel", "Login failed: ${error.message ?: "Unknown error"}") _errorState.value = error.message ?: "Ошибка входа" }