day3_commit2_qr_mini_fix

This commit is contained in:
Terebov_Maksim 2025-02-20 14:20:07 +03:00
parent cb5fbdd634
commit e83718bce0
4 changed files with 31 additions and 5 deletions

View File

@ -33,6 +33,7 @@
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
</activity> </activity>
</application> </application>
</manifest> </manifest>

View File

@ -2,7 +2,9 @@ package ru.myitschool.work.ui.main
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import android.widget.Toast
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.setFragmentResultListener
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -14,6 +16,7 @@ import ru.myitschool.work.databinding.FragmentMainBinding
import ru.myitschool.work.SessionManager import ru.myitschool.work.SessionManager
import retrofit2.Retrofit import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory import retrofit2.converter.gson.GsonConverterFactory
import ru.myitschool.work.ui.qr.scan.QrScanDestination
class MainFragment : Fragment(R.layout.fragment_main) { class MainFragment : Fragment(R.layout.fragment_main) {
private var _binding: FragmentMainBinding? = null private var _binding: FragmentMainBinding? = null
@ -36,6 +39,23 @@ class MainFragment : Fragment(R.layout.fragment_main) {
setupUI() setupUI()
fetchUserInfo() 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() { private fun setupUI() {
@ -44,7 +64,7 @@ class MainFragment : Fragment(R.layout.fragment_main) {
} }
binding.scanQrCode?.setOnClickListener { binding.scanQrCode?.setOnClickListener {
// Здесь вы можете использовать навигацию для перехода к экрану сканирования QR-кода // Переход к экрану сканирования QR-кода
findNavController().navigate(R.id.qrScanFragment) // Убедитесь, что у вас есть правильный ID для навигации findNavController().navigate(R.id.qrScanFragment) // Убедитесь, что у вас есть правильный ID для навигации
} }
} }

View File

@ -44,4 +44,4 @@ class RootActivity : AppCompatActivity() {
} }
return popBackResult || super.onSupportNavigateUp() return popBackResult || super.onSupportNavigateUp()
} }
} }

View File

@ -5,6 +5,7 @@ import androidx.navigation.fragment.findNavController
import ru.myitschool.work.SessionManager import ru.myitschool.work.SessionManager
import ru.myitschool.work.api.OpenDoorRequest import ru.myitschool.work.api.OpenDoorRequest
import android.os.Bundle import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
@ -42,7 +43,10 @@ class QrResult : Fragment(R.layout.fragment_qr_scan_result) {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
// Получаем данные из аргументов
val qrData = QrScanDestination.getDataIfExist(requireArguments()) val qrData = QrScanDestination.getDataIfExist(requireArguments())
Log.d("QrResult", "QR Data: $qrData") // Логируем полученные данные
if (qrData != null) { if (qrData != null) {
binding.result.text = "Результат сканирования: $qrData" // Отображаем результат сканирования binding.result.text = "Результат сканирования: $qrData" // Отображаем результат сканирования
sendRequestToServer(qrData) sendRequestToServer(qrData)
@ -60,18 +64,19 @@ class QrResult : Fragment(R.layout.fragment_qr_scan_result) {
try { try {
val login = SessionManager.userLogin val login = SessionManager.userLogin
if (login != null) { if (login != null) {
val openDoorRequest = OpenDoorRequest(login, qrData.toLong()) // Преобразуем qrData в Long, если это необходимо val openDoorRequest = OpenDoorRequest(login, qrData.toLong()) // Преобразуем qrData в Long
val response = apiService.openDoor(openDoorRequest) val response = apiService.openDoor(openDoorRequest)
if (response.isSuccessful) { if (response.isSuccessful) {
binding.result.text = "Успешно/Success" binding.result.text = "Успешно/Success"
} else { } else {
binding.result.text = "Что-то пошло не так/Something wrong" binding.result.text = "Что-то пошло не так/Something went wrong: ${response.message()}"
} }
} else { } else {
binding.result.text = "Пользователь не авторизован/Unauthorized user" binding.result.text = "Пользователь не авторизован/Unauthorized user"
} }
} catch (e: Exception) { } 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)
} }
} }
} }