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 8d8f74bc8..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( @@ -486,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() } ) {