Added Offline Incubation feature

This commit is contained in:
Mariya
2023-12-07 16:31:33 +05:30
parent 7464bfef6d
commit ec3d0b8628

View File

@@ -2,6 +2,7 @@ package com.example.hpostesting.presentation.adapter
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.content.res.Resources
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
@@ -27,7 +28,9 @@ class OfflineUserListAdapter(private val view: View, private val batLevel: Int)
RecyclerView.Adapter<OfflineUserListAdapter.OfflineUserListViewHolder>() { RecyclerView.Adapter<OfflineUserListAdapter.OfflineUserListViewHolder>() {
inner class OfflineUserListViewHolder(val binding: OfflineUserListViewBinding) : inner class OfflineUserListViewHolder(val binding: OfflineUserListViewBinding) :
RecyclerView.ViewHolder(binding.root) RecyclerView.ViewHolder(binding.root) {
}
private val differCallback = object : DiffUtil.ItemCallback<HemoCubeTestData>() { private val differCallback = object : DiffUtil.ItemCallback<HemoCubeTestData>() {
override fun areItemsTheSame( override fun areItemsTheSame(
@@ -70,55 +73,35 @@ class OfflineUserListAdapter(private val view: View, private val batLevel: Int)
}" }"
userCard.setOnClickListener { userCard.setOnClickListener {
if (batLevel < 40) { if (batLevel < 40) {
Toast.makeText( showWarningToast(R.string.low_battery_warning)
view.context, } else {
context?.getString(R.string.low_battery_warning), if (userList.testStatus != null) {
Toast.LENGTH_SHORT if (userList.testStatus!!) {
).show() showWarningToast(R.string.test_already_conducted)
return@setOnClickListener
}
if (userList.testStatus != null) {
if (userList.testStatus!!) {
Toast.makeText(
view.context,
context?.getString(R.string.test_already_conducted),
Toast.LENGTH_SHORT
).show()
} else {
if (userList.incubationTime != "") {
if (isBetween15And30Minutes(userList.incubationTime) < Constants.INCUBATION_TIME_MIN) {
Toast.makeText(
view.context,
context?.getString(R.string.incubation_not_completed),
Toast.LENGTH_SHORT
).show()
} else if (isBetween15And30Minutes(userList.incubationTime) > Constants.INCUBATION_TIME_MAX) {
Toast.makeText(
view.context,
context?.getString(R.string.incubation_crossed_30_minutes),
Toast.LENGTH_SHORT
).show()
} else {
DataHolder.selectedTest = UserData(
_id = userList._id,
bloodGroup = userList.bloodGroup,
incubationTime = userList.incubationTime
)
view.findNavController()
.navigate(R.id.action_nav_home_to_mainActivity)
}
} else { } else {
Toast.makeText( if (userList.incubationTime != "") {
view.context, val incubationTimeDiff = isBetween15And30Minutes(userList.incubationTime)
context?.getString(R.string.incubation_not_started), if (incubationTimeDiff < 15) {
Toast.LENGTH_SHORT showWarningToast(R.string.incubation_not_completed)
).show() } else if (incubationTimeDiff > 30) {
showWarningToast(R.string.incubation_crossed_30_minutes)
} else {
DataHolder.selectedTest = UserData(
_id = userList._id,
bloodGroup = userList.bloodGroup,
incubationTime = userList.incubationTime
)
view.findNavController()
.navigate(R.id.action_nav_home_to_mainActivity)
}
} else {
showWarningToast(R.string.incubation_not_started)
}
} }
} }
} }
} }
} }
} }
@@ -132,4 +115,25 @@ class OfflineUserListAdapter(private val view: View, private val batLevel: Int)
return diffMillis / (60 * 1000) return diffMillis / (60 * 1000)
} }
private fun showWarningToast(resId: Int) {
val contextToUse = view.context ?: return
val message = try {
contextToUse.getString(resId)
} catch (e: Resources.NotFoundException) {
"Resource not found for ID: $resId"
}
Toast.makeText(
contextToUse,
message,
Toast.LENGTH_SHORT
).show()
}
} }