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 {