diff --git a/app/build.gradle b/app/build.gradle index 4339922..f9c0789 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -138,6 +138,7 @@ dependencies { implementation "androidx.room:room-ktx:2.6.1" implementation "androidx.room:room-runtime:2.6.1" kapt ("androidx.room:room-compiler:2.6.1") + implementation "net.zetetic:android-database-sqlcipher:4.4.0" //image implementation 'com.github.bumptech.glide:glide:4.13.2' 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 1ca4d00..2f7a3e0 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 @@ -16,7 +16,7 @@ package com.example.hpostesting.data.constant object Constants { const val ACTION_USB_PERMISSION = "shanmukha.in.sickle_cell.USB_PERMISSION" const val HEMOCUBE_USB_PERMISSION = "shanmukha.in.sickle_cell_homocube.USB_PERMISSION" - + const val passphrase = "smi_#@sql" const val BASE_URL = "www.google.com" const val DOCUMENT_ID_FOR_UPDATE ="2o71vBKLqdgEKYtFG8Lb" const val ABHA_APP_PACKAGE = "in.ndhm.phr" diff --git a/app/src/main/java/com/example/hpostesting/di/AppModule.kt b/app/src/main/java/com/example/hpostesting/di/AppModule.kt index 28f6331..7fc8714 100644 --- a/app/src/main/java/com/example/hpostesting/di/AppModule.kt +++ b/app/src/main/java/com/example/hpostesting/di/AppModule.kt @@ -20,7 +20,7 @@ import android.content.res.AssetManager import androidx.room.Room import com.example.hpostesting.data.api.MolbioAuthApi import com.example.hpostesting.data.api.MolbioResultApi -import com.example.hpostesting.util.PropertyProvider +import com.example.hpostesting.data.constant.Constants import com.example.hpostesting.data.dao.HemoCubeBufferDao import com.example.hpostesting.data.dao.HemoCubeDao import com.example.hpostesting.data.dao.MyDatabase @@ -37,12 +37,15 @@ import com.example.hpostesting.domain.SaveRawData import com.example.hpostesting.domain.SaveRawDataTest import com.example.hpostesting.presentation.utils.UsbServiceListener import com.example.hpostesting.presentation.utils.UsbServiceListenerImpl +import com.example.hpostesting.util.PropertyProvider import com.example.hpostesting.util.PropertyProviderImpl import dagger.Module import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.components.SingletonComponent +import net.sqlcipher.database.SQLiteDatabase +import net.sqlcipher.database.SupportFactory import okhttp3.OkHttpClient import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory @@ -50,6 +53,7 @@ import java.util.concurrent.TimeUnit import javax.inject.Named import javax.inject.Singleton + @Module @InstallIn(SingletonComponent::class) object AppModule { @@ -57,9 +61,12 @@ object AppModule { @Provides @Singleton fun provideMyDatabase(@ApplicationContext context: Context): MyDatabase { + val passphraseBytes: ByteArray = SQLiteDatabase.getBytes(Constants.passphrase.toCharArray()) + val factory = SupportFactory(passphraseBytes) + return Room.databaseBuilder( context, MyDatabase::class.java, "my_database" - ).fallbackToDestructiveMigration().build() + ).openHelperFactory(factory).fallbackToDestructiveMigration().build() } @Provides 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 3e02f20..a22fbce 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 @@ -35,7 +35,7 @@ import java.util.Calendar import java.util.Date import java.util.Locale -class OfflineUserListAdapter(private val view: View, private val batLevel: Int) : +class OfflineUserListAdapter(private val view: View, private val batLevel: Int, private val fromWhere:String) : RecyclerView.Adapter() { inner class OfflineUserListViewHolder(val binding: OfflineUserListViewBinding) : @@ -88,59 +88,61 @@ class OfflineUserListAdapter(private val view: View, private val batLevel: Int) } else { teststatus.text = view.context.getString(R.string.test_pending) } - - userCard.setOnClickListener { - if (false) { - Toast.makeText( - view.context, - view.context.getString(R.string.low_battery_warning), - Toast.LENGTH_SHORT - ).show() - return@setOnClickListener - } - if (userList.testStatus != null) { - if (userList.testStatus!!) { + if(fromWhere == "Home"){ + userCard.setOnClickListener { + if (false) { Toast.makeText( view.context, - view.context.getString(R.string.test_already_conducted), + view.context.getString(R.string.low_battery_warning), Toast.LENGTH_SHORT ).show() - } else { - if (userList.incubationTime != "") { - if (isBetween15And30Minutes(userList.incubationTime) < Constants.INCUBATION_TIME_MIN) { - Toast.makeText( - view.context, - view.context.getString(R.string.incubation_not_completed), - Toast.LENGTH_SHORT - ).show() - } else - if (isBetween15And30Minutes(userList.incubationTime) > Constants.INCUBATION_TIME_MAX) { - Toast.makeText( - view.context, - view.context.getString(R.string.incubation_crossed_30_minutes), - Toast.LENGTH_SHORT - ).show() - } else { - DataHolder.selectedTest = UserData( - sampleid = userList.sampleid, - _id = userList._id, - bloodGroup = userList.bloodGroup, - incubationTime = userList.incubationTime - ) - view.findNavController() - .navigate(R.id.action_nav_home_to_mainActivity) - } - } else { + return@setOnClickListener + } + if (userList.testStatus != null) { + if (userList.testStatus!!) { Toast.makeText( view.context, - view.context.getString(R.string.incubation_not_started), + view.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, + view.context.getString(R.string.incubation_not_completed), + Toast.LENGTH_SHORT + ).show() + } else + if (isBetween15And30Minutes(userList.incubationTime) > Constants.INCUBATION_TIME_MAX) { + Toast.makeText( + view.context, + view.context.getString(R.string.incubation_crossed_30_minutes), + Toast.LENGTH_SHORT + ).show() + } else { + DataHolder.selectedTest = UserData( + sampleid = userList.sampleid, + _id = userList._id, + bloodGroup = userList.bloodGroup, + incubationTime = userList.incubationTime + ) + view.findNavController() + .navigate(R.id.action_nav_home_to_mainActivity) + } + } else { + Toast.makeText( + view.context, + view.context.getString(R.string.incubation_not_started), + Toast.LENGTH_SHORT + ).show() + } } } } } + } } diff --git a/app/src/main/java/com/example/hpostesting/presentation/dashboard/ActivitiesFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/ActivitiesFragment.kt index faff1c5..bb376e7 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/ActivitiesFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/ActivitiesFragment.kt @@ -50,7 +50,7 @@ class ActivitiesFragment : Fragment() { val bm = requireContext().getSystemService(Context.BATTERY_SERVICE) as BatteryManager val batLevel: Int = bm.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY) - adapter = OfflineUserListAdapter(binding.root, batLevel) + adapter = OfflineUserListAdapter(binding.root, batLevel,"Activities") adapter.differ.submitList(userData) binding.rvOrderOffline.adapter = adapter }else{ 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 b68d072..b4fa232 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 @@ -142,7 +142,7 @@ class HomeFragment : Fragment() { } val bm = requireContext().getSystemService(BATTERY_SERVICE) as BatteryManager val batLevel: Int = bm.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY) - adapter = OfflineUserListAdapter(binding.root, batLevel) + adapter = OfflineUserListAdapter(binding.root, batLevel,"Home") adapter.differ.submitList(userList) binding.rvOrderOffline.adapter = adapter }