This commit is contained in:
sathwikcs
2025-02-06 15:29:17 +05:30
parent 5f969ac651
commit 02b660d1ca

View File

@@ -47,8 +47,9 @@ class HomeViewModel @Inject constructor(
private val _isUpdateDialogVisible = MutableStateFlow(false) private val _isUpdateDialogVisible = MutableStateFlow(false)
val isUpdateDialogVisible = _isUpdateDialogVisible.asStateFlow() val isUpdateDialogVisible = _isUpdateDialogVisible.asStateFlow()
private val _downloadProgress = MutableStateFlow(false)
val downloadProgress = _downloadProgress.asStateFlow() private val _downloadProgress = MutableStateFlow(0f)
val downloadProgress: StateFlow<Float> = _downloadProgress
private val appUpdater = AppUpdater(applicationContext) private val appUpdater = AppUpdater(applicationContext)
fun checkForUpdates(context: Context) { fun checkForUpdates(context: Context) {
@@ -64,39 +65,38 @@ class HomeViewModel @Inject constructor(
} }
} }
// In your ViewModel, assume:
fun installUpdate(url: String) { fun installUpdate(url: String) {
// Start the download
appUpdater.downloadAndInstall(url) appUpdater.downloadAndInstall(url)
viewModelScope.launch { viewModelScope.launch {
appUpdater.updateState.collect { state -> appUpdater.updateState.collect { state ->
when (state) { when (state) {
is AppUpdater.UpdaterState.Downloading -> { is AppUpdater.UpdaterState.Downloading -> {
// Update progress UI (state.progress is between 0 and 1) _downloadProgress.value = state.progress
_downloadProgress.value = true
} }
is AppUpdater.UpdaterState.Success -> { is AppUpdater.UpdaterState.Success -> {
// APK downloaded and installation started _downloadProgress.value = 1f
// You might want to show a message
_downloadProgress.value = false
} }
is AppUpdater.UpdaterState.Error -> { is AppUpdater.UpdaterState.Error -> {
// Handle error (show message, etc.) _downloadProgress.value = 0f
} }
AppUpdater.UpdaterState.Idle -> { AppUpdater.UpdaterState.Idle -> {
// Initial state // No op
} }
} }
} }
} }
} }
fun dismissUpdate() { fun dismissUpdate() {
_isUpdateDialogVisible.value = false _isUpdateDialogVisible.value = false
_updateInfo.value = null _updateInfo.value = null
_downloadProgress.value = false _downloadProgress.value = 0f
} }
init { init {