code: Вроде как сделал 3 экран
This commit is contained in:
parent
486320b688
commit
1d46891456
@ -6,13 +6,13 @@ import android.view.View
|
|||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.viewModels
|
import androidx.fragment.app.viewModels
|
||||||
|
import androidx.navigation.fragment.findNavController
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import ru.myitschool.work.R
|
import ru.myitschool.work.R
|
||||||
import androidx.navigation.fragment.findNavController
|
import ru.myitschool.work.api.scan.CodeJson
|
||||||
import androidx.transition.Visibility
|
|
||||||
import ru.myitschool.work.databinding.FragmentScanResultBinding
|
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.main.MainDestination
|
||||||
|
import ru.myitschool.work.ui.qr.scan.QrScanDestination
|
||||||
import ru.myitschool.work.utils.AuthPreferences
|
import ru.myitschool.work.utils.AuthPreferences
|
||||||
import ru.myitschool.work.utils.collectWhenStarted
|
import ru.myitschool.work.utils.collectWhenStarted
|
||||||
import ru.myitschool.work.utils.visibleOrGone
|
import ru.myitschool.work.utils.visibleOrGone
|
||||||
@ -22,40 +22,47 @@ class ResultFragment : Fragment(R.layout.fragment_scan_result) {
|
|||||||
private var _binding: FragmentScanResultBinding? = null
|
private var _binding: FragmentScanResultBinding? = null
|
||||||
private val binding: FragmentScanResultBinding get() = _binding!!
|
private val binding: FragmentScanResultBinding get() = _binding!!
|
||||||
private val viewModel: ResultViewModel by viewModels()
|
private val viewModel: ResultViewModel by viewModels()
|
||||||
|
private lateinit var authPreferences: AuthPreferences
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
authPreferences = AuthPreferences(requireContext())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
_binding = FragmentScanResultBinding.bind(view)
|
_binding = FragmentScanResultBinding.bind(view)
|
||||||
|
|
||||||
setupLoginComponents()
|
setupOpenComponents()
|
||||||
|
observeOpenState()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupLoginComponents() {
|
private fun setupOpenComponents() {
|
||||||
binding.apply {
|
binding.apply {
|
||||||
result.visibleOrGone(false)
|
result.visibleOrGone(false)
|
||||||
successIcon.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 ->
|
viewModel.state.collectWhenStarted(this) { state ->
|
||||||
when (state) {
|
when (state) {
|
||||||
is ResultViewModel.ResultState.Loading -> {
|
is ResultViewModel.ResultState.Loading -> {
|
||||||
binding.result.visibleOrGone(false)
|
binding.result.visibleOrGone(false)
|
||||||
binding.successIcon.visibleOrGone(false)
|
binding.successIcon.visibleOrGone(false)
|
||||||
binding.error.visibleOrGone(false)
|
binding.error.visibleOrGone(false)
|
||||||
|
|
||||||
binding.loading.visibleOrGone(true)
|
binding.loading.visibleOrGone(true)
|
||||||
}
|
}
|
||||||
is ResultViewModel.ResultState.Success -> {
|
is ResultViewModel.ResultState.Success -> {
|
||||||
binding.result.visibleOrGone(true)
|
binding.result.visibleOrGone(true)
|
||||||
binding.successIcon.visibleOrGone(true)
|
binding.successIcon.visibleOrGone(true)
|
||||||
|
|
||||||
binding.error.visibleOrGone(false)
|
binding.error.visibleOrGone(false)
|
||||||
binding.loading.visibleOrGone(false)
|
binding.loading.visibleOrGone(false)
|
||||||
}
|
}
|
||||||
@ -63,19 +70,17 @@ class ResultFragment : Fragment(R.layout.fragment_scan_result) {
|
|||||||
binding.result.visibleOrGone(false)
|
binding.result.visibleOrGone(false)
|
||||||
binding.successIcon.visibleOrGone(false)
|
binding.successIcon.visibleOrGone(false)
|
||||||
binding.loading.visibleOrGone(false)
|
binding.loading.visibleOrGone(false)
|
||||||
|
|
||||||
binding.error.visibleOrGone(true)
|
binding.error.visibleOrGone(true)
|
||||||
}
|
}
|
||||||
is ResultViewModel.ResultState.Error -> {
|
is ResultViewModel.ResultState.Error -> {
|
||||||
binding.loading.visibleOrGone(false)
|
binding.loading.visibleOrGone(false)
|
||||||
binding.result.apply {
|
binding.result.apply {
|
||||||
visibleOrGone(true)
|
visibleOrGone(true)
|
||||||
text = RiootoString(R.string.userNotFing)
|
text = getText(R.string.userNotFing)
|
||||||
}
|
}
|
||||||
Log.d("Authentication", "Ошибка сканирования")
|
Log.d("Authentication", getText(R.string.userNotFing).toString())
|
||||||
}
|
}
|
||||||
|
ResultViewModel.ResultState.Initial -> binding.loading.visibleOrGone(false)
|
||||||
LoginViewModel.LoginState.Initial -> binding.loading.visibleOrGone(false)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -88,7 +93,7 @@ class ResultFragment : Fragment(R.layout.fragment_scan_result) {
|
|||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Log.e("ResultFragment", "Navigation error", e)
|
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>
|
<resources>
|
||||||
<string name="app_name">NTO Pass</string>
|
<string name="app_name">NTO Pass</string>
|
||||||
<string name="loginText">логин</string>
|
<string name="loginText">Логин</string>
|
||||||
<string name="welcomeText">Добро пожаловать!</string>
|
<string name="welcomeText">Добро пожаловать!</string>
|
||||||
<string name="inputLoginText">Введите свой логин</string>
|
<string name="inputLoginText">Введите свой логин</string>
|
||||||
<string name="welcomeDescriptionLoginText">для авторизации в приложении</string>
|
<string name="welcomeDescriptionLoginText">для авторизации в приложении</string>
|
||||||
@ -17,10 +17,10 @@
|
|||||||
<string name="contentDescriptionPhoto">photo</string>
|
<string name="contentDescriptionPhoto">photo</string>
|
||||||
<string name="resulText">Вход выполнен успешно</string>
|
<string name="resulText">Вход выполнен успешно</string>
|
||||||
<string name="closeText">Закрыть/Close</string>
|
<string name="closeText">Закрыть/Close</string>
|
||||||
|
<string name="errorGoText">Ошибка перехода</string>
|
||||||
<string name="errorLoginText">Ошибка входа</string>
|
<string name="errorLoginText">Ошибка входа</string>
|
||||||
<string name="text_last_enter">Последний вход 12.12.1212</string>
|
<string name="text_last_enter">Последний вход 12.12.1212</string>
|
||||||
<string name="text_scan_time">Время сканирования 12:12</string>
|
<string name="serverError">Ошибка сервера</string>
|
||||||
<string name="text_identificator">Идентификатор</string>
|
<string name="userNotFing">Пользователь не найден</string>
|
||||||
<string name="text_type">Тип прохода</string>
|
<string name="passwordText">Пароль</string>
|
||||||
<string name="passwordText">пароль</string>
|
|
||||||
</resources>
|
</resources>
|
Loading…
x
Reference in New Issue
Block a user