diff --git a/app/src/main/java/com/aurora/store/compose/ui/details/AppDetailsScreen.kt b/app/src/main/java/com/aurora/store/compose/ui/details/AppDetailsScreen.kt index 481b9c37f..525e21e54 100644 --- a/app/src/main/java/com/aurora/store/compose/ui/details/AppDetailsScreen.kt +++ b/app/src/main/java/com/aurora/store/compose/ui/details/AppDetailsScreen.kt @@ -274,12 +274,14 @@ private fun ScreenContentApp( @Composable fun SetupActions() { when (state) { + is AppState.Purchasing, is AppState.Downloading -> { Actions( primaryActionDisplayName = stringResource(R.string.action_open), secondaryActionDisplayName = stringResource(R.string.action_cancel), isPrimaryActionEnabled = false, - onSecondaryAction = onCancelDownload + onSecondaryAction = onCancelDownload, + isSecondaryActionEnabled = state !is AppState.Purchasing ) } diff --git a/app/src/main/java/com/aurora/store/compose/ui/details/components/Details.kt b/app/src/main/java/com/aurora/store/compose/ui/details/components/Details.kt index 5fc79b61d..8a35abb99 100644 --- a/app/src/main/java/com/aurora/store/compose/ui/details/components/Details.kt +++ b/app/src/main/java/com/aurora/store/compose/ui/details/components/Details.kt @@ -97,6 +97,10 @@ fun Details( ) } + AppState.Purchasing::class -> { + stringResource(R.string.preparing_to_install) + } + else -> { stringResource(R.string.version, versionName, versionCode) } diff --git a/app/src/main/java/com/aurora/store/data/model/State.kt b/app/src/main/java/com/aurora/store/data/model/State.kt index 6e806fe30..2dee8e587 100644 --- a/app/src/main/java/com/aurora/store/data/model/State.kt +++ b/app/src/main/java/com/aurora/store/data/model/State.kt @@ -55,6 +55,7 @@ sealed class AppState { val timeRemaining: Long ) : AppState() + data object Purchasing : AppState() data class Installing(val progress: Float) : AppState() data class Error(val message: String?) : AppState() data class Installed(val versionName: String, val versionCode: Long) : AppState() @@ -67,7 +68,7 @@ sealed class AppState { * Whether there is some sort of ongoing process related to the app */ fun inProgress(): Boolean { - return this is Downloading || this is Installing + return this is Downloading || this is Installing || this is Purchasing } /** 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 fd1e9612b..fc47aa0c8 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 @@ -222,7 +222,7 @@ class AppDetailsViewModel @Inject constructor( fun purchase(app: App) { viewModelScope.launch(NonCancellable + Dispatchers.IO) { try { - _state.value = AppState.Downloading(0F, 0 ,0) + _state.value = AppState.Purchasing val files = purchaseHelper.purchase(app.packageName, app.versionCode, app.offerType) _purchaseStatus.emit(files.isNotEmpty()) if (files.isNotEmpty()) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4e381763b..9905b191e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -508,6 +508,7 @@ Limited: Works with limited features Unsupported: Not functional Unknown: Not checked yet + Preparing to install %1$d apps installed