From d12881f1375eed1ac5c8753fc49f7b9aea776505 Mon Sep 17 00:00:00 2001 From: Kaif Date: Tue, 9 Jan 2024 18:48:47 +0530 Subject: [PATCH] Made some internal changes, pritimoi please check and remove unwanted code --- .../hpostesting/data/constant/Constants.kt | 18 ++-- .../data/model/login/LoginRequest.kt | 3 +- .../hpostesting/domain/CheckUpdateWorker.kt | 8 +- .../hpostesting/domain/di/AppModule.kt | 2 +- .../hpostesting/presentation/NatsManager.kt | 2 +- .../adapter/OfflineUserListAdapter.kt | 2 +- .../dashboard/DashboardActivity.kt | 4 +- .../presentation/dashboard/GalleryFragment.kt | 30 ++++++- .../presentation/dashboard/HomeFragment.kt | 90 ++++++++++++------- .../dashboard/ui/LoginFragment.kt | 2 +- .../presentation/hemocube/HemoCubeFragment.kt | 12 +-- app/src/main/res/layout/fragment_gallery.xml | 16 +++- app/src/main/res/values-hi/strings.xml | 1 + app/src/main/res/values-kn/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + app/src/main/res/xml/device_filter.xml | 1 + 16 files changed, 133 insertions(+), 60 deletions(-) diff --git a/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt b/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt index fb35fff..336029d 100644 --- a/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt +++ b/app/src/main/java/com/example/hpostesting/data/constant/Constants.kt @@ -13,8 +13,8 @@ object Constants { const val uid = "NKH5555AH" const val deviceProvisionEmail = "HPOS_provisioner@bigtec.co.in" const val deviceProvisionPassword = "f2ab0e7f9d69" - const val deviceID = "HCV-000-3001" - const val devicePassword = "810516d8f4c7" + const val DEVICE_ID_API = "deviceIDAPI" + const val DEVICE_PASSWORD_API = "devicePasswordAPI" const val ACCESS_TOKEN = "accessToken" const val NATS_TOKEN = "natsToken" @@ -43,8 +43,8 @@ object Constants { const val DEVICE_VENDOR_ID = 1027 const val HOMO_CUBE_ID = 29987 const val VENDOR_ID = 6790 - const val HEMO_CUBE_V2_PRODUCT_ID = 24577 - const val HEMO_CUBE_V2_VENDOR_ID = 1027 + const val HEMO_CUBE_V2_PRODUCT_ID = 60000 + const val HEMO_CUBE_V2_VENDOR_ID = 4292 const val ERROR_NORMAL = 400 const val ERROR_CRITICAL = 401 @@ -54,6 +54,7 @@ object Constants { const val USER_ID = "usernameId" val STATICID = listOf( + "FACTORY", "ADMIN", "VIZ-1000-0004", "VIZ-1000-0005", @@ -97,7 +98,8 @@ object Constants { "HCV-000-3017", "HCV-000-3018", "HCV-000-3019", - "HCV-000-3020" + "HCV-000-3020", + "HPP1-1024-0001" ) const val password = "SMI@12345" @@ -149,7 +151,7 @@ object Constants { listOf(0.2012, 0.0092), // LED3, 555nm listOf(1.0, 0.0) // LED4, 560nm ), - "HCV-000-3002" to listOf( + "HPP1-0124-0001" to listOf( listOf(0.723142, -0.09135), // LED1, 435nm listOf(0.581462456, -0.58502), // LED2, 415nm listOf(0.1964, 0.011565), // LED3, 555nm @@ -158,7 +160,7 @@ object Constants { ) val DEVICE_HB_PARAMETERS: Map>> = mapOf>>( - "HCV-000-3001" to listOf( + "HPP1-0124-0001" to listOf( listOf(1.0, 0.0), // LED1, 435nm listOf(1.0, 0.0), // LED2, 415nm listOf(42.241, -24.105), // LED3, 555nm @@ -288,7 +290,7 @@ object Constants { const val MINIMUM_BATTERY_LEVEL = 0 val BUFFER_INTENSITY_THRESHOLDS: Map>> = mapOf>>( - "HCV-000-3001" to listOf( + "HPP1-0124-0001" to listOf( listOf(20000, 25074), listOf(20000, 24596), listOf(20000, 26065), diff --git a/app/src/main/java/com/example/hpostesting/data/model/login/LoginRequest.kt b/app/src/main/java/com/example/hpostesting/data/model/login/LoginRequest.kt index cdf7f3d..df696b0 100644 --- a/app/src/main/java/com/example/hpostesting/data/model/login/LoginRequest.kt +++ b/app/src/main/java/com/example/hpostesting/data/model/login/LoginRequest.kt @@ -8,5 +8,6 @@ data class LoginRequest( val mode: String? = "", val password: String? = "", val serialNumber: String? = "", - val username: String? = "" + val username: String? = "", + val version: String? = "" ) \ No newline at end of file diff --git a/app/src/main/java/com/example/hpostesting/domain/CheckUpdateWorker.kt b/app/src/main/java/com/example/hpostesting/domain/CheckUpdateWorker.kt index 9a55536..8e05fc9 100644 --- a/app/src/main/java/com/example/hpostesting/domain/CheckUpdateWorker.kt +++ b/app/src/main/java/com/example/hpostesting/domain/CheckUpdateWorker.kt @@ -15,10 +15,10 @@ class CheckUpdateWorker( override suspend fun doWork(): Result = withContext(Dispatchers.IO) { try { - for (i in 1..900){ - delay(1000) - Log.d("Work for every second", "doWork: Running") - } +// for (i in 1..900){ +// delay(1000) +// Log.d("Work for every second", "doWork: Running") +// } Result.success() } catch (e: Exception) { diff --git a/app/src/main/java/com/example/hpostesting/domain/di/AppModule.kt b/app/src/main/java/com/example/hpostesting/domain/di/AppModule.kt index 2628f67..bb0b369 100644 --- a/app/src/main/java/com/example/hpostesting/domain/di/AppModule.kt +++ b/app/src/main/java/com/example/hpostesting/domain/di/AppModule.kt @@ -116,7 +116,7 @@ object AppModule { @Provides @Singleton fun provideSharedPreferences(@ApplicationContext context: Context): SharedPreferences { - return context.getSharedPreferences("PREFERENCE_NAME", Context.MODE_PRIVATE) + return context.getSharedPreferences("HEMOCUBE", Context.MODE_PRIVATE) } @Provides diff --git a/app/src/main/java/com/example/hpostesting/presentation/NatsManager.kt b/app/src/main/java/com/example/hpostesting/presentation/NatsManager.kt index f49091c..4c8f3dc 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/NatsManager.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/NatsManager.kt @@ -24,7 +24,7 @@ class NatsManager(datacollector: DashboardActivity) { Log.d(TAG, "TRY TO CONNECT") Thread { - val seedString = "SUAK5IDCMHY4T2WA2LHNXGICGHKR3TPJFNSP6AUQP523RLANO4PSR6IEYA" + val seedString = "SUAEB5PUWNS6C2HUV3MFI6HUDEAPGPFPBHMI73NHIQATCDD2BWALVEZXZ4" val seedBytes = seedString.toCharArray() val theNKey = NKey.fromSeed(seedBytes) // really should load from somewhere diff --git a/app/src/main/java/com/example/hpostesting/presentation/adapter/OfflineUserListAdapter.kt b/app/src/main/java/com/example/hpostesting/presentation/adapter/OfflineUserListAdapter.kt index 2a77c87..c190408 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/adapter/OfflineUserListAdapter.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/adapter/OfflineUserListAdapter.kt @@ -61,7 +61,7 @@ class OfflineUserListAdapter(private val view: View, private val batLevel: Int) bloodGroup.text = "Blood group: ${userList.bloodGroup}" time.text = "Time: ${userList.incubationTime}" userCard.setOnClickListener { - if (batLevel < 40) { + if (false) { Toast.makeText( view.context, context?.getString(R.string.low_battery_warning), diff --git a/app/src/main/java/com/example/hpostesting/presentation/dashboard/DashboardActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/DashboardActivity.kt index 22de1f1..4741cd2 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/DashboardActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/DashboardActivity.kt @@ -49,8 +49,8 @@ class DashboardActivity : AppCompatActivity(), IDataCollector { setContentView(binding.root) setSupportActionBar(binding.appBarDashboard.toolbar) nats = NatsManager(this) -// nats.connect() -// nats.pub("server.hpos.HCV-000-3001.ping", "THIS IS A TEST MSG") + nats.connect() + nats.pub("server.hpos.HCV-000-3001.ping", "THIS IS A TEST MSG") val drawerLayout: DrawerLayout = binding.drawerLayout val navView: NavigationView = binding.navView diff --git a/app/src/main/java/com/example/hpostesting/presentation/dashboard/GalleryFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/GalleryFragment.kt index f2c88f2..5698fd5 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/GalleryFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/GalleryFragment.kt @@ -1,15 +1,20 @@ package com.example.hpostesting.presentation.dashboard +import android.content.Context import android.content.Intent +import android.content.SharedPreferences import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment +import androidx.fragment.app.activityViewModels +import com.example.hpostesting.data.constant.Constants import com.example.hpostesting.presentation.autodac.AutoDacActivity import com.example.hpostesting.presentation.buffercheck.HemocubeBufferCheckActivity import com.example.hpostesting.presentation.calibration.CalibrationActivity import com.example.hpostesting.presentation.diagnostics.DiagnosticsActivity +import com.example.hpostesting.presentation.hemocube.HemoCubeViewModel import `in`.sminnovations.hpostesting.databinding.FragmentGalleryBinding class GalleryFragment : Fragment() { @@ -20,10 +25,12 @@ class GalleryFragment : Fragment() { // onDestroyView. private val binding get() = _binding!! + private lateinit var sharedPreference: SharedPreferences + + private val hemoCubeViewModel: HemoCubeViewModel by activityViewModels() + override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? + inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { // val galleryViewModel = // ViewModelProvider(this).get(GalleryViewModel::class.java) @@ -31,6 +38,23 @@ class GalleryFragment : Fragment() { _binding = FragmentGalleryBinding.inflate(inflater, container, false) val root: View = binding.root + sharedPreference = requireContext().getSharedPreferences("HEMOCUBE", Context.MODE_PRIVATE) + + if (sharedPreference.getString( + Constants.USER_ID, "" + ) == "FACTORY" && sharedPreference.getString(Constants.DEVICE_ID_API, "").toString() + .isEmpty() && sharedPreference.getString(Constants.DEVICE_PASSWORD_API, "") + .toString().isEmpty() + ) { + binding.btnDeviceProvision.visibility = View.VISIBLE + } else { + binding.btnDeviceProvision.visibility = View.GONE + } + + binding.btnDeviceProvision.setOnClickListener { +// hemoCubeViewModel.deviceProvision() + } + binding.btnSubmit.setOnClickListener { startActivity(Intent(requireContext(), HemocubeBufferCheckActivity::class.java)) } diff --git a/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt index 5a36b43..500924f 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt @@ -24,6 +24,7 @@ import com.example.hpostesting.data.model.login.LoginResponse import com.example.hpostesting.data.model.patient.HemoCubeTestData import com.example.hpostesting.data.model.patient.UserData import com.example.hpostesting.data.model.updates.CheckUpdateRequest +import com.example.hpostesting.data.model.updates.DeviceUpdateRequest import com.example.hpostesting.presentation.KitScanActivity import com.example.hpostesting.presentation.adapter.OfflineUserListAdapter import com.example.hpostesting.presentation.adapter.UserListAdapter @@ -69,8 +70,7 @@ class HomeFragment : Fragment() { return super.onCreateView(inflater, container, savedInstanceState) } - sharedPreference = - requireContext().getSharedPreferences("PREFERENCE_NAME", Context.MODE_PRIVATE) + sharedPreference = requireContext().getSharedPreferences("HEMOCUBE", Context.MODE_PRIVATE) DataHolder.selectedTest = null return binding.root @@ -130,41 +130,55 @@ class HomeFragment : Fragment() { showUploadDialog(requireContext()) } binding.btnNewKit.setOnClickListener { - with(sharedPreference.edit()) { - putString(Constants.KIT_NUMBER, "") - putInt(Constants.KIT_COUNT, 0) - apply() - } - startActivity(Intent(requireContext(), KitScanActivity::class.java)) - requireActivity().finish() +// with(sharedPreference.edit()) { +// putString(Constants.KIT_NUMBER, "") +// putInt(Constants.KIT_COUNT, 0) +// apply() +// } +// startActivity(Intent(requireContext(), KitScanActivity::class.java)) +// requireActivity().finish() + val password = sharedPreference.getString(Constants.DEVICE_PASSWORD_API, "810516d8f4c7").toString() + val userID = sharedPreference.getString(Constants.DEVICE_ID_API, "HCV-000-3001").toString() + hemoCubeViewModel.deviceUpdate(createDeviceUpdateRequestData()) + hemoCubeViewModel.login(createLoginRequestData(userID, password)) } } private fun checkForTokenAndUpdate() { val accessToken = sharedPreference.getString(Constants.ACCESS_TOKEN, "").toString() val natsToken = sharedPreference.getString(Constants.NATS_TOKEN, "").toString() - val natsTokenExpireDate = sharedPreference.getString(Constants.NATS_TOKEN_EXPIRE_DATE, "").toString() - if (accessToken.isEmpty() && natsToken.isEmpty()) { - hemoCubeViewModel.login(createLoginRequestData()) - } else { - if (isTokenExpired(accessToken)) { - hemoCubeViewModel.login(createLoginRequestData()) + val natsTokenExpireDate = + sharedPreference.getString(Constants.NATS_TOKEN_EXPIRE_DATE, "").toString() + val password = sharedPreference.getString(Constants.DEVICE_PASSWORD_API, "810516d8f4c7").toString() + val userID = sharedPreference.getString(Constants.DEVICE_ID_API, "HCV-000-3001").toString() + if (userID.isNotEmpty() && password.isNotEmpty()) { + if (accessToken.isEmpty() && natsToken.isEmpty()) { + hemoCubeViewModel.login(createLoginRequestData(userID, password)) } else { - hemoCubeViewModel.checkUpdate(createCheckUpdateRequestData()) - hemoCubeViewModel.uploadLogs() - hemoCubeViewModel.startPeriodicCheckUpdate() + if (true) { + hemoCubeViewModel.login(createLoginRequestData(userID, password)) + } else { + hemoCubeViewModel.deviceUpdate(createDeviceUpdateRequestData()) + hemoCubeViewModel.uploadLogs() + hemoCubeViewModel.startPeriodicCheckUpdate() + } } + } else { + Toast.makeText( + requireContext(), + "Contact Help and get your device provision done", + Toast.LENGTH_SHORT + ).show() } hemoCubeViewModel.loginResponse.observe(viewLifecycleOwner) { response -> when (response) { is Result.Success -> { updateTokens(response) - checkForTokenAndUpdate() } is Result.Error -> { response.exception.let { message -> - Toast.makeText(activity, "An error occurred: $message", Toast.LENGTH_LONG) + Toast.makeText(activity, "An error occurred in login: $message", Toast.LENGTH_LONG) .show() } } @@ -177,17 +191,17 @@ class HomeFragment : Fragment() { } } - hemoCubeViewModel.checkUpdate.observe(viewLifecycleOwner) { response -> + hemoCubeViewModel.deviceUpdate.observe(viewLifecycleOwner) { response -> when (response) { is Result.Success -> { Toast.makeText( - requireContext(), response.data.data?.version, Toast.LENGTH_SHORT + requireContext(), response.data.toString(), Toast.LENGTH_SHORT ).show() } is Result.Error -> { response.exception.let { message -> - Toast.makeText(activity, "An error occurred: $message", Toast.LENGTH_LONG) + Toast.makeText(activity, "An error occurred check update: $message", Toast.LENGTH_LONG) .show() } } @@ -212,7 +226,7 @@ class HomeFragment : Fragment() { is Result.Error -> { response.exception.let { message -> - Toast.makeText(activity, "An error occurred: $message", Toast.LENGTH_LONG) + Toast.makeText(activity, "An error occurred in uploading logs: $message", Toast.LENGTH_LONG) .show() } } @@ -241,16 +255,24 @@ class HomeFragment : Fragment() { with(sharedPreference.edit()) { putString(Constants.ACCESS_TOKEN, response.data.data?.accessToken) putString(Constants.NATS_TOKEN, response.data.data?.deviceUser?.natsToken) - putString(Constants.NATS_TOKEN_EXPIRE_DATE, response.data.data?.deviceUser?.natsTokenExpiry) + putString( + Constants.NATS_TOKEN_EXPIRE_DATE, + response.data.data?.deviceUser?.natsTokenExpiry + ) apply() } } - private fun createLoginRequestData(): LoginRequest { + private fun createLoginRequestData(userID: String, password: String): LoginRequest { + val pInfo = requireActivity().packageManager.getPackageInfo( + requireActivity().packageName, 0 + ) + val version = pInfo.versionName return LoginRequest( - password = Constants.devicePassword, - serialNumber = Constants.deviceID, - username = Constants.deviceID + password = password, + serialNumber = userID, + username = userID, + version = version ) } @@ -264,6 +286,12 @@ class HomeFragment : Fragment() { ) } + private fun createDeviceUpdateRequestData(): DeviceUpdateRequest { + return DeviceUpdateRequest( + serial_no = "HPOS-000-3001" + ) + } + private fun setUserId() { binding.btnSubmit.setOnClickListener { val userId = binding.userId.text.toString() @@ -448,9 +476,9 @@ class HomeFragment : Fragment() { binding.uploadData.visibility = uploadDataVisibility } - hemoCubeViewModel.allKitTestData.observe(viewLifecycleOwner) {bufferData -> + hemoCubeViewModel.allKitTestData.observe(viewLifecycleOwner) { bufferData -> val uploadDataVisibility = - if (bufferData.any { !it.localFlag}) View.VISIBLE else View.GONE + if (bufferData.any { !it.localFlag }) View.VISIBLE else View.GONE binding.uploadData.visibility = uploadDataVisibility } } diff --git a/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/LoginFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/LoginFragment.kt index aa2d9df..0294742 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/LoginFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/LoginFragment.kt @@ -24,7 +24,7 @@ class LoginFragment : Fragment() { ): View { _binding = FragmentLoginBinding.inflate(inflater, container, false) sharedPreference = - requireContext().getSharedPreferences("PREFERENCE_NAME", Context.MODE_PRIVATE) + requireContext().getSharedPreferences("HEMOCUBE", Context.MODE_PRIVATE) return binding.root } diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt index 36bbf6c..fd5ebd8 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt @@ -396,17 +396,21 @@ class HemoCubeFragment : Fragment() { when { resultData.contains("SNE") && this.testStatusCode < Constants.TEST_STATUS_CODE_CONFIG_COMPLETED -> { - val pattern = Regex("HCV-\\d{3}-\\d{4}") + val pattern = Regex("HPP1-\\d{4}-\\d{4}") val matchResult = pattern.find(resultData) val hardwareId = matchResult?.value - if (hardwareId.toString().length == 12) { + if (hardwareId.toString().length == 14) { deviceHardwareId += hardwareId with(sharedPreferences.edit()) { putString(Constants.DEVICE_ID, deviceHardwareId) apply() } this.testStatusCode = Constants.TEST_STATUS_CODE_CONFIG_COMPLETED + activity?.runOnUiThread { + binding.btnPlacebuffer.visibility = View.VISIBLE + } + hemoCubeViewModel.messages.postValue(getString(R.string.start)) if (!Constants.DEVICE_CONFIGURATION.containsKey(deviceHardwareId)) { allErrorMessages += "Calibration configuration for this device id is not found" @@ -419,10 +423,6 @@ class HemoCubeFragment : Fragment() { } else { hemoCubeViewModel.messages.postValue("Config error") } - activity?.runOnUiThread { - binding.btnPlacebuffer.visibility = View.VISIBLE - } - hemoCubeViewModel.messages.postValue(getString(R.string.start)) } resultData.contains("#BS") && this.testStatusCode < Constants.TEST_STATUS_CODE_BUFFER_STARTED -> { diff --git a/app/src/main/res/layout/fragment_gallery.xml b/app/src/main/res/layout/fragment_gallery.xml index 9ab4166..5966bad 100644 --- a/app/src/main/res/layout/fragment_gallery.xml +++ b/app/src/main/res/layout/fragment_gallery.xml @@ -16,7 +16,6 @@ android:text="@string/check_buffer" android:textColor="@color/white" app:cornerRadius="16dp" - app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> @@ -64,4 +63,19 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/btn_auto_dac" /> + + \ No newline at end of file diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index 4ce4b3e..e7678fd 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -113,6 +113,7 @@ Auto DAC Quality Assurance Calibration + Device Provision स्थान सैम्पल शुरू करें नया किट diff --git a/app/src/main/res/values-kn/strings.xml b/app/src/main/res/values-kn/strings.xml index ac41ef7..e62ed5d 100644 --- a/app/src/main/res/values-kn/strings.xml +++ b/app/src/main/res/values-kn/strings.xml @@ -113,6 +113,7 @@ Auto DAC Quality Controls Calibration + Device Provision ಪ್ರಾರಂಭಿಸಿ ನಮೂನೆ ಪ್ರಾರಂಭಿಸಿ ಹೊಸ ಕಿಟ್ diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 071b407..549281d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -114,6 +114,7 @@ Auto DAC Quality Assurance Calibration + Device Provision Start Start Sample New Kit diff --git a/app/src/main/res/xml/device_filter.xml b/app/src/main/res/xml/device_filter.xml index 93713c1..bf03724 100644 --- a/app/src/main/res/xml/device_filter.xml +++ b/app/src/main/res/xml/device_filter.xml @@ -11,6 +11,7 @@ +