From e83718bce05c7ee276b1a15dfa92fda23d470822 Mon Sep 17 00:00:00 2001 From: Terebov_Maksim Date: Thu, 20 Feb 2025 14:20:07 +0300 Subject: [PATCH] day3_commit2_qr_mini_fix --- app/src/main/AndroidManifest.xml | 1 + .../myitschool/work/ui/Main/MainFragment.kt | 22 ++++++++++++++++++- .../ru/myitschool/work/ui/RootActivity.kt | 2 +- .../myitschool/work/ui/qr/result/QrResult.kt | 11 +++++++--- 4 files changed, 31 insertions(+), 5 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2a9c5ce..0dd787c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -33,6 +33,7 @@ + \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/ui/Main/MainFragment.kt b/app/src/main/java/ru/myitschool/work/ui/Main/MainFragment.kt index b862949..27c1452 100644 --- a/app/src/main/java/ru/myitschool/work/ui/Main/MainFragment.kt +++ b/app/src/main/java/ru/myitschool/work/ui/Main/MainFragment.kt @@ -2,7 +2,9 @@ package ru.myitschool.work.ui.main import android.os.Bundle import android.view.View +import android.widget.Toast import androidx.fragment.app.Fragment +import androidx.fragment.app.setFragmentResultListener import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController import kotlinx.coroutines.launch @@ -14,6 +16,7 @@ import ru.myitschool.work.databinding.FragmentMainBinding import ru.myitschool.work.SessionManager import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory +import ru.myitschool.work.ui.qr.scan.QrScanDestination class MainFragment : Fragment(R.layout.fragment_main) { private var _binding: FragmentMainBinding? = null @@ -36,6 +39,23 @@ class MainFragment : Fragment(R.layout.fragment_main) { setupUI() fetchUserInfo() + + // Проверяем, есть ли результат QR + checkQrResult() + } + + private fun checkQrResult() { + // Слушаем результат QR сканирования + setFragmentResultListener(QrScanDestination.REQUEST_KEY) { _, bundle -> + val qrData = QrScanDestination.getDataIfExist(bundle) + if (qrData != null) { + // Если данные QR есть, переходим на экран с результатом + val resultBundle = QrScanDestination.packToBundle(qrData) + findNavController().navigate(R.id.qrResultFragment, resultBundle) + } else { + Toast.makeText(requireContext(), "QR данные не найдены", Toast.LENGTH_SHORT).show() + } + } } private fun setupUI() { @@ -44,7 +64,7 @@ class MainFragment : Fragment(R.layout.fragment_main) { } binding.scanQrCode?.setOnClickListener { - // Здесь вы можете использовать навигацию для перехода к экрану сканирования QR-кода + // Переход к экрану сканирования QR-кода findNavController().navigate(R.id.qrScanFragment) // Убедитесь, что у вас есть правильный ID для навигации } } diff --git a/app/src/main/java/ru/myitschool/work/ui/RootActivity.kt b/app/src/main/java/ru/myitschool/work/ui/RootActivity.kt index e16a644..53bb926 100644 --- a/app/src/main/java/ru/myitschool/work/ui/RootActivity.kt +++ b/app/src/main/java/ru/myitschool/work/ui/RootActivity.kt @@ -44,4 +44,4 @@ class RootActivity : AppCompatActivity() { } return popBackResult || super.onSupportNavigateUp() } -} +} \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/ui/qr/result/QrResult.kt b/app/src/main/java/ru/myitschool/work/ui/qr/result/QrResult.kt index e864924..98b74e8 100644 --- a/app/src/main/java/ru/myitschool/work/ui/qr/result/QrResult.kt +++ b/app/src/main/java/ru/myitschool/work/ui/qr/result/QrResult.kt @@ -5,6 +5,7 @@ import androidx.navigation.fragment.findNavController import ru.myitschool.work.SessionManager import ru.myitschool.work.api.OpenDoorRequest import android.os.Bundle +import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -42,7 +43,10 @@ class QrResult : Fragment(R.layout.fragment_qr_scan_result) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + // Получаем данные из аргументов val qrData = QrScanDestination.getDataIfExist(requireArguments()) + Log.d("QrResult", "QR Data: $qrData") // Логируем полученные данные + if (qrData != null) { binding.result.text = "Результат сканирования: $qrData" // Отображаем результат сканирования sendRequestToServer(qrData) @@ -60,18 +64,19 @@ class QrResult : Fragment(R.layout.fragment_qr_scan_result) { try { val login = SessionManager.userLogin if (login != null) { - val openDoorRequest = OpenDoorRequest(login, qrData.toLong()) // Преобразуем qrData в Long, если это необходимо + val openDoorRequest = OpenDoorRequest(login, qrData.toLong()) // Преобразуем qrData в Long val response = apiService.openDoor(openDoorRequest) if (response.isSuccessful) { binding.result.text = "Успешно/Success" } else { - binding.result.text = "Что-то пошло не так/Something wrong" + binding.result.text = "Что-то пошло не так/Something went wrong: ${response.message()}" } } else { binding.result.text = "Пользователь не авторизован/Unauthorized user" } } catch (e: Exception) { - binding.result.text = "Что-то пошло не так/Something wrong" + binding.result.text = "Что-то пошло не так/Something went wrong: ${e.message}" + Log.e("QrResult", "Error sending request to server", e) } } }