From 02b660d1cae5996377d36c12eec82093d3b3d0c8 Mon Sep 17 00:00:00 2001 From: sathwikcs <85106054+sathwikcs@users.noreply.github.com> Date: Thu, 6 Feb 2025 15:29:17 +0530 Subject: [PATCH] homeVM --- .../screens/home/viewModel/homeVM.kt | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/in/sminnovations/attendanceapp/screens/home/viewModel/homeVM.kt b/app/src/main/java/in/sminnovations/attendanceapp/screens/home/viewModel/homeVM.kt index ca8f7c4..b92cfe5 100644 --- a/app/src/main/java/in/sminnovations/attendanceapp/screens/home/viewModel/homeVM.kt +++ b/app/src/main/java/in/sminnovations/attendanceapp/screens/home/viewModel/homeVM.kt @@ -47,8 +47,9 @@ class HomeViewModel @Inject constructor( private val _isUpdateDialogVisible = MutableStateFlow(false) val isUpdateDialogVisible = _isUpdateDialogVisible.asStateFlow() - private val _downloadProgress = MutableStateFlow(false) - val downloadProgress = _downloadProgress.asStateFlow() + + private val _downloadProgress = MutableStateFlow(0f) + val downloadProgress: StateFlow = _downloadProgress private val appUpdater = AppUpdater(applicationContext) fun checkForUpdates(context: Context) { @@ -64,39 +65,38 @@ class HomeViewModel @Inject constructor( } } + // In your ViewModel, assume: + + fun installUpdate(url: String) { + // Start the download appUpdater.downloadAndInstall(url) + viewModelScope.launch { appUpdater.updateState.collect { state -> when (state) { is AppUpdater.UpdaterState.Downloading -> { - // Update progress UI (state.progress is between 0 and 1) - _downloadProgress.value = true + _downloadProgress.value = state.progress } - is AppUpdater.UpdaterState.Success -> { - // APK downloaded and installation started - // You might want to show a message - _downloadProgress.value = false + _downloadProgress.value = 1f } - is AppUpdater.UpdaterState.Error -> { - // Handle error (show message, etc.) - + _downloadProgress.value = 0f } - AppUpdater.UpdaterState.Idle -> { - // Initial state + // No op } } } } } + fun dismissUpdate() { _isUpdateDialogVisible.value = false _updateInfo.value = null - _downloadProgress.value = false + _downloadProgress.value = 0f } init {