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 d25697c53..7967a6cd9 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 @@ -135,7 +135,7 @@ fun AppDetailsScreen( exodusReport = exodusReport, onNavigateUp = onNavigateUp, onNavigateToAppDetails = onNavigateToAppDetails, - onDownload = { viewModel.enqueueDownload(app!!) }, + onDownload = { requestedApp -> viewModel.enqueueDownload(requestedApp) }, onFavorite = { viewModel.toggleFavourite(app!!) }, onCancelDownload = { viewModel.cancelDownload(app!!) }, onUninstall = { AppInstaller.uninstall(context, packageName) }, @@ -201,7 +201,7 @@ private fun ScreenContentApp( exodusReport: Report? = null, onNavigateUp: () -> Unit = {}, onNavigateToAppDetails: (packageName: String) -> Unit = {}, - onDownload: () -> Unit = {}, + onDownload: (requestedApp: App) -> Unit = {}, onFavorite: () -> Unit = {}, onCancelDownload: () -> Unit = {}, onUninstall: () -> Unit = {}, @@ -239,9 +239,9 @@ private fun ScreenContentApp( } } - fun onInstall() { + fun onInstall(requestedApp: App = app) { if (isPermittedToInstall(context, app)) { - onDownload() + onDownload(requestedApp) onNavigateBack() } else { val requiredPermissions = setOfNotNull( @@ -255,7 +255,11 @@ private fun ScreenContentApp( @Composable fun SetupMenu() { - AppDetailsMenu(isInstalled = app.isInstalled, isFavorite = isFavorite) { menuItem -> + AppDetailsMenu( + isInstalled = app.isInstalled, + isFavorite = isFavorite, + state = state + ) { menuItem -> when (menuItem) { MenuItem.FAVORITE -> onFavorite() MenuItem.MANUAL_DOWNLOAD -> { @@ -482,7 +486,8 @@ private fun ScreenContentApp( is ExtraScreen.ManualDownload -> ManualDownloadScreen( packageName = app.packageName, - onNavigateUp = ::onNavigateBack + onNavigateUp = ::onNavigateBack, + onRequestInstall = { requestedApp -> onInstall(requestedApp) } ) is Screen.DevProfile -> DevProfileScreen( diff --git a/app/src/main/java/com/aurora/store/compose/ui/details/ManualDownloadScreen.kt b/app/src/main/java/com/aurora/store/compose/ui/details/ManualDownloadScreen.kt index 7a883bc00..1a4159c7d 100644 --- a/app/src/main/java/com/aurora/store/compose/ui/details/ManualDownloadScreen.kt +++ b/app/src/main/java/com/aurora/store/compose/ui/details/ManualDownloadScreen.kt @@ -66,6 +66,7 @@ import kotlinx.coroutines.launch fun ManualDownloadScreen( packageName: String, onNavigateUp: () -> Unit, + onRequestInstall: (requestedApp: App) -> Unit, viewModel: AppDetailsViewModel = hiltViewModel(key = packageName), windowAdaptiveInfo: WindowAdaptiveInfo = currentWindowAdaptiveInfo() ) { @@ -76,18 +77,12 @@ fun ManualDownloadScreen( else -> stringResource(R.string.title_manual_download) } - LaunchedEffect(key1 = state) { - if (state is AppState.Downloading) { - onNavigateUp() - } - } - ScreenContent( state = state, topAppBarTitle = topAppBarTitle, currentVersionCode = app!!.versionCode, onNavigateUp = onNavigateUp, - onDownload = { versionCode -> + onRequestInstall = { versionCode -> val requestedApp = app!!.copy( versionCode = versionCode, dependencies = app!!.dependencies.copy( @@ -96,7 +91,7 @@ fun ManualDownloadScreen( } ) ) - viewModel.enqueueDownload(requestedApp) + onRequestInstall(requestedApp) } ) } @@ -107,7 +102,7 @@ private fun ScreenContent( topAppBarTitle: String? = null, currentVersionCode: Long = 0L, onNavigateUp: () -> Unit = {}, - onDownload: (versionCode: Long) -> Unit = {}, + onRequestInstall: (versionCode: Long) -> Unit = {}, windowAdaptiveInfo: WindowAdaptiveInfo = currentWindowAdaptiveInfo() ) { @@ -200,7 +195,7 @@ private fun ScreenContent( modifier = Modifier.weight(1F), enabled = !state.inProgress(), onClick = { - onDownload(versionCode.text.toLong()) + onRequestInstall(versionCode.text.toLong()) focusManager.clearFocus() } ) { diff --git a/app/src/main/java/com/aurora/store/compose/ui/details/menu/AppDetailsMenu.kt b/app/src/main/java/com/aurora/store/compose/ui/details/menu/AppDetailsMenu.kt index f15bef65d..c33b78a3a 100644 --- a/app/src/main/java/com/aurora/store/compose/ui/details/menu/AppDetailsMenu.kt +++ b/app/src/main/java/com/aurora/store/compose/ui/details/menu/AppDetailsMenu.kt @@ -25,6 +25,7 @@ import com.aurora.gplayapi.data.models.App import com.aurora.store.R import com.aurora.store.compose.composables.TopAppBarComposable import com.aurora.store.compose.preview.AppPreviewProvider +import com.aurora.store.data.model.AppState /** * Menu for the app details screen @@ -36,6 +37,7 @@ import com.aurora.store.compose.preview.AppPreviewProvider @Composable fun AppDetailsMenu( modifier: Modifier = Modifier, + state: AppState = AppState.Unavailable, isInstalled: Boolean = false, isFavorite: Boolean = false, isExpanded: Boolean = false, @@ -75,7 +77,8 @@ fun AppDetailsMenu( DropdownMenu(expanded = expanded, onDismissRequest = { expanded = false }) { DropdownMenuItem( text = { Text(text = stringResource(R.string.title_manual_download)) }, - onClick = { onClick(MenuItem.MANUAL_DOWNLOAD) } + onClick = { onClick(MenuItem.MANUAL_DOWNLOAD) }, + enabled = !state.inProgress() ) DropdownMenuItem( text = { Text(text = stringResource(R.string.title_download_playstore)) },