code: Вроде как сделал 3 экран

This commit is contained in:
DKaverznev 2025-02-19 10:33:08 +03:00
parent 486320b688
commit 1d46891456
2 changed files with 25 additions and 20 deletions

View File

@ -6,13 +6,13 @@ import android.view.View
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import dagger.hilt.android.AndroidEntryPoint
import ru.myitschool.work.R
import androidx.navigation.fragment.findNavController
import androidx.transition.Visibility
import ru.myitschool.work.api.scan.CodeJson
import ru.myitschool.work.databinding.FragmentScanResultBinding
import ru.myitschool.work.ui.login.LoginViewModel
import ru.myitschool.work.ui.main.MainDestination
import ru.myitschool.work.ui.qr.scan.QrScanDestination
import ru.myitschool.work.utils.AuthPreferences
import ru.myitschool.work.utils.collectWhenStarted
import ru.myitschool.work.utils.visibleOrGone
@ -22,40 +22,47 @@ class ResultFragment : Fragment(R.layout.fragment_scan_result) {
private var _binding: FragmentScanResultBinding? = null
private val binding: FragmentScanResultBinding get() = _binding!!
private val viewModel: ResultViewModel by viewModels()
private lateinit var authPreferences: AuthPreferences
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
authPreferences = AuthPreferences(requireContext())
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
_binding = FragmentScanResultBinding.bind(view)
setupLoginComponents()
setupOpenComponents()
observeOpenState()
}
private fun setupLoginComponents() {
private fun setupOpenComponents() {
binding.apply {
result.visibleOrGone(false)
successIcon.visibleOrGone(false)
close.setOnClickListener {
navigateToMainScreen()
}
}
private fun observeLoginState() {
val qrData = QrScanDestination.getDataIfExist(arguments ?: Bundle())
authPreferences.getLogin()?.let { viewModel.open(it, CodeJson(qrData)) }
}
private fun observeOpenState() {
viewModel.state.collectWhenStarted(this) { state ->
when (state) {
is ResultViewModel.ResultState.Loading -> {
binding.result.visibleOrGone(false)
binding.successIcon.visibleOrGone(false)
binding.error.visibleOrGone(false)
binding.loading.visibleOrGone(true)
}
is ResultViewModel.ResultState.Success -> {
binding.result.visibleOrGone(true)
binding.successIcon.visibleOrGone(true)
binding.error.visibleOrGone(false)
binding.loading.visibleOrGone(false)
}
@ -63,19 +70,17 @@ class ResultFragment : Fragment(R.layout.fragment_scan_result) {
binding.result.visibleOrGone(false)
binding.successIcon.visibleOrGone(false)
binding.loading.visibleOrGone(false)
binding.error.visibleOrGone(true)
}
is ResultViewModel.ResultState.Error -> {
binding.loading.visibleOrGone(false)
binding.result.apply {
visibleOrGone(true)
text = RiootoString(R.string.userNotFing)
text = getText(R.string.userNotFing)
}
Log.d("Authentication", "Ошибка сканирования")
Log.d("Authentication", getText(R.string.userNotFing).toString())
}
LoginViewModel.LoginState.Initial -> binding.loading.visibleOrGone(false)
ResultViewModel.ResultState.Initial -> binding.loading.visibleOrGone(false)
}
}
}
@ -88,7 +93,7 @@ class ResultFragment : Fragment(R.layout.fragment_scan_result) {
}
} catch (e: Exception) {
Log.e("ResultFragment", "Navigation error", e)
Toast.makeText(context, "Ошибка перехода", Toast.LENGTH_SHORT).show()
Toast.makeText(context, getText(R.string.errorGoText).toString(), Toast.LENGTH_SHORT).show()
}
}

View File

@ -1,6 +1,6 @@
<resources>
<string name="app_name">NTO Pass</string>
<string name="loginText">логин</string>
<string name="loginText">Логин</string>
<string name="welcomeText">Добро пожаловать!</string>
<string name="inputLoginText">Введите свой логин</string>
<string name="welcomeDescriptionLoginText">для авторизации в приложении</string>
@ -17,10 +17,10 @@
<string name="contentDescriptionPhoto">photo</string>
<string name="resulText">Вход выполнен успешно</string>
<string name="closeText">Закрыть/Close</string>
<string name="errorGoText">Ошибка перехода</string>
<string name="errorLoginText">Ошибка входа</string>
<string name="text_last_enter">Последний вход 12.12.1212</string>
<string name="text_scan_time">Время сканирования 12:12</string>
<string name="text_identificator">Идентификатор</string>
<string name="text_type">Тип прохода</string>
<string name="passwordText">пароль</string>
<string name="serverError">Ошибка сервера</string>
<string name="userNotFing">Пользователь не найден</string>
<string name="passwordText">Пароль</string>
</resources>