diff --git a/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsFragment.kt index 5c10c99..fd48f9e 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/diagnostics/DiagnosticsFragment.kt @@ -7,6 +7,7 @@ import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.Toast import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.lifecycle.MutableLiveData @@ -49,6 +50,7 @@ class DiagnosticsFragment : Fragment() { private fun initViews() { + binding.btnSubmit.visibility = View.GONE listenToHemoCube() getDeviceId() binding.btnSubmit.setOnClickListener { @@ -68,6 +70,17 @@ class DiagnosticsFragment : Fragment() { binding.tvSubtitle4.text = it Log.e("diagnostics",binding.tvSubtitle4.text.toString()) } + + diagnosticsViewModel.fireBaseUpload.observe(viewLifecycleOwner) { result -> + if (result == "Success") { + showToast("Diagnostics data uploaded successfully") + } + if (result == "Local") { + showToast("Diagnostics uploading failed, note it down manually") + } + + binding.progressBar.visibility = View.GONE + } } private fun getDeviceId() { @@ -79,15 +92,6 @@ class DiagnosticsFragment : Fragment() { data?.let { val stringData = String(it) diagnosticsViewModel.messages.postValue(stringData) - val pattern = Regex("([A-Z]+)\\s(\\d+)") - val matchResult = pattern.find(stringData) - if (matchResult != null) { - val (sn, hardwareId) = matchResult.destructured - with(sharedPreferences.edit()) { - putString(Constants.DEVICE_ID, hardwareId) - apply() - } - } binding.tvSubtitle4.text = stringData } } @@ -112,8 +116,6 @@ class DiagnosticsFragment : Fragment() { }) } - - private fun listenToHemoCube() { val fullReadOutput = StringBuilder() @@ -128,6 +130,19 @@ class DiagnosticsFragment : Fragment() { fullReadOutput.append(stringData) resultData += stringData binding.tvSubtitle4.text = resultData + if (stringData.contains("SN")) { + val slData = stringData.split(" ") + if (slData.size > 1) { + val hardwareId = slData[1].trim() + with(sharedPreferences.edit()) { + putString(Constants.DEVICE_ID, hardwareId) + apply() + } + } + activity?.runOnUiThread { + binding.btnSubmit.visibility = View.VISIBLE + } + } } if (resultData.contains("END") || fullReadOutput.contains("END")) { @@ -176,5 +191,7 @@ class DiagnosticsFragment : Fragment() { return parsedData } - + private fun showToast(message: String) { + Toast.makeText(requireContext(), message, Toast.LENGTH_SHORT).show() + } } \ No newline at end of file