homeVM
This commit is contained in:
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user