code: Вроде как сделал 3 экран
This commit is contained in:
parent
486320b688
commit
1d46891456
@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
val qrData = QrScanDestination.getDataIfExist(arguments ?: Bundle())
|
||||
authPreferences.getLogin()?.let { viewModel.open(it, CodeJson(qrData)) }
|
||||
}
|
||||
|
||||
private fun observeLoginState() {
|
||||
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()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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>
|
Loading…
x
Reference in New Issue
Block a user