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