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" />
</intent-filter>
</activity>
</application>
</manifest>

View File

@ -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 для навигации
}
}

View File

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

View File

@ -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)
}
}
}