From 6ddb491bc89ee4bedfc0a3bdbc72758d6982c32e Mon Sep 17 00:00:00 2001 From: Mariya Date: Thu, 8 Feb 2024 12:18:31 +0530 Subject: [PATCH] Added code to send response of device provision api into firebase --- .../DeviceProvisionFragment.kt | 142 ++++++++---------- 1 file changed, 63 insertions(+), 79 deletions(-) diff --git a/app/src/main/java/com/example/hpostesting/presentation/deviceprovision/DeviceProvisionFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/deviceprovision/DeviceProvisionFragment.kt index 4a6b6ee..a86fc25 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/deviceprovision/DeviceProvisionFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/deviceprovision/DeviceProvisionFragment.kt @@ -10,27 +10,19 @@ import android.view.ViewGroup import android.widget.Toast import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels -import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData -import com.example.hpostesting.data.DataHolder import com.example.hpostesting.data.Result import com.example.hpostesting.data.constant.Constants import com.example.hpostesting.data.constant.HemoCubeCommands import com.example.hpostesting.data.model.deviceprovision.DeviceProvisionRequest -import com.example.hpostesting.data.model.diagnostics.DiagnosticsData import com.example.hpostesting.data.model.patient.DeviceData import com.example.hpostesting.presentation.UsbServiceListener import com.example.hpostesting.presentation.dashboard.DashboardActivity import com.google.firebase.crashlytics.ktx.crashlytics import com.google.firebase.ktx.Firebase -import `in`.sminnovations.hpostesting.R import `in`.sminnovations.hpostesting.databinding.FragmentDeviceProvisionBinding -import java.text.SimpleDateFormat -import java.util.Calendar -import java.util.Locale class DeviceProvisionFragment : Fragment() { - private var resultData: String = "" private lateinit var binding: FragmentDeviceProvisionBinding private val viewModel: DeviceProvisionViewModel by activityViewModels() @@ -46,13 +38,11 @@ class DeviceProvisionFragment : Fragment() { sharedPreferences = requireContext().getSharedPreferences("HEMOCUBE", Context.MODE_PRIVATE) return binding.root } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) initViews() observeViewModel() } - private fun initViews() { listenToHemoCube() getDeviceId() @@ -66,87 +56,81 @@ class DeviceProvisionFragment : Fragment() { ) ) } - - - - viewModel.deviceData.observe(viewLifecycleOwner) { currentDeviceData = it } - - } + } private fun observeViewModel() { - viewModel.deviceProvisionResponse.observe(viewLifecycleOwner) { response -> - when (response) { - is Result.Success -> { - if (response.data.result == "Success") { - with(sharedPreferences.edit()) { - putString( - Constants.DEVICE_ID_API, - response.data.data?.credentials?.username - ) - putString( - Constants.DEVICE_PASSWORD_API, - response.data.data?.credentials?.password - ) - putString( - Constants.NATS_TOKEN, - response.data.data?.device?.deviceUser?.natsToken - ) - putString( - Constants.NATS_TOKEN_EXPIRE_DATE, - response.data.data?.device?.deviceUser?.natsTokenExpiry - ) - apply() - } - startActivity( - Intent( - requireContext(), - DashboardActivity::class.java - ) - ) - Toast.makeText( - activity, "Device registered successfully", Toast.LENGTH_LONG - ).show() - - viewModel.addDeviceProvisionDataToDb( - DeviceData( - deviceProvisionResponse = response.toString() - ) - ) - - } else { - Toast.makeText( - activity, - "An error in device provision: ${response.data.message}", - Toast.LENGTH_LONG - ).show() - binding.btnSubmit.visibility = View.VISIBLE - } - + viewModel.deviceProvisionResponse.observe(viewLifecycleOwner) { response -> + when (response) { + is Result.Success -> { + if (response.data.result == "Success") { + with(sharedPreferences.edit()) { + putString( + Constants.DEVICE_ID_API, + response.data.data?.credentials?.username + ) + putString( + Constants.DEVICE_PASSWORD_API, + response.data.data?.credentials?.password + ) + putString( + Constants.NATS_TOKEN, + response.data.data?.device?.deviceUser?.natsToken + ) + putString( + Constants.NATS_TOKEN_EXPIRE_DATE, + response.data.data?.device?.deviceUser?.natsTokenExpiry + ) + apply() } + startActivity( + Intent( + requireContext(), + DashboardActivity::class.java + ) + ) + Toast.makeText( + activity, "Device registered successfully", Toast.LENGTH_LONG + ).show() - is Result.Error -> { - response.exception.let { message -> - Toast.makeText( - activity, - "An error occurred in device provision: $message", - Toast.LENGTH_LONG - ).show() - } - } + viewModel.addDeviceProvisionDataToDb( + DeviceData( + deviceProvisionResponse = response.toString() + ) + ) + } else { + Toast.makeText( + activity, + "An error in device provision: ${response.data.message}", + Toast.LENGTH_LONG + ).show() + binding.btnSubmit.visibility = View.VISIBLE + } - is Result.Loading -> { - binding.btnSubmit.visibility = View.GONE - } + } - else -> {} + is Result.Error -> { + response.exception.let { message -> + Toast.makeText( + activity, + "An error occurred in device provision: $message", + Toast.LENGTH_LONG + ).show() } } + is Result.Loading -> { + binding.btnSubmit.visibility = View.GONE + } + + else -> {} + } + } + } @@ -164,7 +148,8 @@ class DeviceProvisionFragment : Fragment() { val fullReadOutput = StringBuilder() try { - (activity as DeviceProvisionActivity).mService.listenToHemoCube(object : UsbServiceListener { + (activity as DeviceProvisionActivity).mService.listenToHemoCube(object : + UsbServiceListener { override fun onUsbRead(data: ByteArray?) { data?.let { val stringData = String(it) @@ -180,7 +165,6 @@ class DeviceProvisionFragment : Fragment() { Firebase.crashlytics.recordException(e) } } - private fun handleUsbData() { when { resultData.contains("SNE") -> {