From ea9827c6df555e762eec80a4fcbd84ff96b46812 Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Wed, 17 Sep 2025 14:31:20 +0530 Subject: [PATCH] compose: Minor improvements for download/install Make purchase action noncancellable to allow it to happen even if user navigates away from the screen after requesting it. Also, don't allow expanding at all if no files are available as both actions at the moment requires files to be available. Signed-off-by: Aayush Gupta --- .../com/aurora/store/compose/composables/DownloadComposable.kt | 3 ++- .../com/aurora/store/viewmodel/details/AppDetailsViewModel.kt | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/aurora/store/compose/composables/DownloadComposable.kt b/app/src/main/java/com/aurora/store/compose/composables/DownloadComposable.kt index 12cd45482..2d7f16e6d 100644 --- a/app/src/main/java/com/aurora/store/compose/composables/DownloadComposable.kt +++ b/app/src/main/java/com/aurora/store/compose/composables/DownloadComposable.kt @@ -137,7 +137,8 @@ fun DownloadComposable( trailingButton = { SplitButtonDefaults.TrailingButton( checked = isExpanded, - onCheckedChange = { isExpanded = it } + onCheckedChange = { isExpanded = it }, + enabled = download.canInstall(context) ) { Icon( painter = when { diff --git a/app/src/main/java/com/aurora/store/viewmodel/details/AppDetailsViewModel.kt b/app/src/main/java/com/aurora/store/viewmodel/details/AppDetailsViewModel.kt index 44e5f9a6b..fd1e9612b 100644 --- a/app/src/main/java/com/aurora/store/viewmodel/details/AppDetailsViewModel.kt +++ b/app/src/main/java/com/aurora/store/viewmodel/details/AppDetailsViewModel.kt @@ -40,6 +40,7 @@ import com.aurora.store.util.Preferences.PREFERENCE_UPDATES_EXTENDED import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.NonCancellable import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted @@ -219,7 +220,7 @@ class AppDetailsViewModel @Inject constructor( } fun purchase(app: App) { - viewModelScope.launch(Dispatchers.IO) { + viewModelScope.launch(NonCancellable + Dispatchers.IO) { try { _state.value = AppState.Downloading(0F, 0 ,0) val files = purchaseHelper.purchase(app.packageName, app.versionCode, app.offerType)