Implement - In app update after getting the new update link from check update response
This commit is contained in:
@@ -4,10 +4,7 @@ import android.app.DownloadManager
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.Intent.ACTION_INSTALL_PACKAGE
|
||||
import android.content.IntentFilter
|
||||
import android.content.pm.PackageManager
|
||||
import android.content.pm.ResolveInfo
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
@@ -16,21 +13,27 @@ import android.widget.Toast
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.content.FileProvider
|
||||
import androidx.drawerlayout.widget.DrawerLayout
|
||||
import androidx.lifecycle.Observer
|
||||
import androidx.navigation.findNavController
|
||||
import androidx.navigation.ui.AppBarConfiguration
|
||||
import androidx.navigation.ui.navigateUp
|
||||
import androidx.navigation.ui.setupActionBarWithNavController
|
||||
import androidx.navigation.ui.setupWithNavController
|
||||
import com.example.hpostesting.data.Result
|
||||
import com.example.hpostesting.data.constant.LanguageManager
|
||||
import com.example.hpostesting.presentation.hemocube.HemoCubeViewModel
|
||||
import com.google.android.material.navigation.NavigationView
|
||||
|
||||
import com.google.firebase.appdistribution.FirebaseAppDistribution
|
||||
import com.google.firebase.appdistribution.FirebaseAppDistributionException
|
||||
import com.google.firebase.crashlytics.FirebaseCrashlytics
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import `in`.sminnovations.hpostesting.preprod.R
|
||||
import `in`.sminnovations.hpostesting.preprod.databinding.ActivityDashboardBinding
|
||||
import `in`.sminnovations.hpostesting.R
|
||||
import `in`.sminnovations.hpostesting.databinding.ActivityDashboardBinding
|
||||
import okhttp3.ResponseBody
|
||||
|
||||
import java.io.File
|
||||
import javax.inject.Inject
|
||||
|
||||
@AndroidEntryPoint
|
||||
class DashboardActivity : AppCompatActivity() {
|
||||
@@ -38,6 +41,8 @@ class DashboardActivity : AppCompatActivity() {
|
||||
private lateinit var appBarConfiguration: AppBarConfiguration
|
||||
private lateinit var binding: ActivityDashboardBinding
|
||||
private var downloadId: Long = 0
|
||||
@Inject
|
||||
lateinit var hemocubeViewModel: HemoCubeViewModel
|
||||
override fun attachBaseContext(newBase: Context?) {
|
||||
val languageCode = LanguageManager.getSavedLanguage(newBase!!)
|
||||
LanguageManager.setLocale(newBase, languageCode)
|
||||
@@ -50,7 +55,33 @@ class DashboardActivity : AppCompatActivity() {
|
||||
binding = ActivityDashboardBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
setSupportActionBar(binding.appBarDashboard.toolbar)
|
||||
initiateUpdate()
|
||||
|
||||
hemocubeViewModel.deviceUpdate.observe(this) { result ->
|
||||
when (result) {
|
||||
is Result.Success -> {
|
||||
// Handle success
|
||||
val apkUrl = result.data
|
||||
initiateUpdate(apkUrl)
|
||||
// The APK URL LiveData will be updated automatically
|
||||
}
|
||||
|
||||
is Result.Error -> {
|
||||
// Handle error
|
||||
val error = result.exception
|
||||
// Handle error...
|
||||
}
|
||||
|
||||
is Result.Loading -> {
|
||||
// Handle loading state
|
||||
}
|
||||
|
||||
else -> {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
val drawerLayout: DrawerLayout = binding.drawerLayout
|
||||
val navView: NavigationView = binding.navView
|
||||
val navController = findNavController(R.id.nav_host_fragment_content_dashboard)
|
||||
@@ -63,6 +94,8 @@ class DashboardActivity : AppCompatActivity() {
|
||||
setupActionBarWithNavController(navController, appBarConfiguration)
|
||||
navView.setupWithNavController(navController)
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||
@@ -76,10 +109,8 @@ class DashboardActivity : AppCompatActivity() {
|
||||
return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp()
|
||||
}
|
||||
|
||||
private fun initiateUpdate() {
|
||||
val apkUrl = "https://www.dropbox.com/scl/fi/v0hux8qrby54rjns8mhum/hpos-testing_preprod_2.1.27.apk?rlkey=ias0fe0zq72avy01rk4cvzmvp&dl=1"
|
||||
|
||||
val request = DownloadManager.Request(Uri.parse(apkUrl))
|
||||
private fun initiateUpdate(apkUrl: ResponseBody) {
|
||||
val request = DownloadManager.Request(Uri.parse(apkUrl.toString()))
|
||||
request.setTitle("App Update")
|
||||
request.setDescription("Downloading update...")
|
||||
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
|
||||
|
||||
@@ -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
|
||||
@@ -150,6 +151,7 @@ class HomeFragment : Fragment() {
|
||||
} else {
|
||||
hemoCubeViewModel.checkUpdate(createCheckUpdateRequestData())
|
||||
hemoCubeViewModel.uploadLogs()
|
||||
hemoCubeViewModel.deviceUpdate(createDeviceRequestData())
|
||||
}
|
||||
}
|
||||
hemoCubeViewModel.loginResponse.observe(viewLifecycleOwner) { response ->
|
||||
@@ -260,6 +262,13 @@ class HomeFragment : Fragment() {
|
||||
)
|
||||
}
|
||||
|
||||
private fun createDeviceRequestData(): DeviceUpdateRequest {
|
||||
return DeviceUpdateRequest(
|
||||
serial_no = Constants.serialNumber
|
||||
|
||||
)
|
||||
}
|
||||
|
||||
private fun setUserId() {
|
||||
binding.btnSubmit.setOnClickListener {
|
||||
val userId = binding.userId.text.toString()
|
||||
|
||||
@@ -156,7 +156,7 @@ class HemoCubeViewModel @Inject constructor(
|
||||
val logFile = logFileManager.createLogFile().let { file ->
|
||||
val requestBody = file?.asRequestBody("multipart/form-data".toMediaTypeOrNull())
|
||||
val multipartFile =
|
||||
requestBody?.let { MultipartBody.Part.createFormData("logFile", file.name, it) }
|
||||
requestBody?.let { MultipartBody.Part.createFormData("logFile", file?.name, it) }
|
||||
multipartFile?.let { partFile ->
|
||||
databaseRepository.uploadLogs(partFile).let { result ->
|
||||
uploadLogs.postValue(result)
|
||||
|
||||
Reference in New Issue
Block a user