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)
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)
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 {