compose: details: Update menu properly on state changed

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2025-12-01 21:30:57 +08:00
parent 255af297a9
commit 2366bc4db1
2 changed files with 7 additions and 22 deletions

View File

@@ -253,11 +253,7 @@ private fun ScreenContentApp(
@Composable
fun SetupMenu() {
AppDetailsMenu(
isInstalled = app.isInstalled,
isFavorite = isFavorite,
state = state
) { menuItem ->
AppDetailsMenu(isFavorite = isFavorite, state = state) { menuItem ->
when (menuItem) {
MenuItem.FAVORITE -> onFavorite()
MenuItem.MANUAL_DOWNLOAD -> {

View File

@@ -20,17 +20,13 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import com.aurora.gplayapi.data.models.App
import com.aurora.store.R
import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.data.model.AppState
/**
* Menu for the app details screen
* @param app App for which this menu should be inflated
* @param modifier The modifier to be applied to the composable
* @param onMenuItemClicked Callback when a menu item has been clicked
* @see MenuItem
@@ -39,7 +35,6 @@ import com.aurora.store.data.model.AppState
fun AppDetailsMenu(
modifier: Modifier = Modifier,
state: AppState = AppState.Unavailable,
isInstalled: Boolean = false,
isFavorite: Boolean = false,
isExpanded: Boolean = false,
onMenuItemClicked: (menuItem: MenuItem) -> Unit = {}
@@ -81,17 +76,15 @@ fun AppDetailsMenu(
onClick = { onClick(MenuItem.MANUAL_DOWNLOAD) },
enabled = !state.inProgress()
)
// Inflate actions available only when app is installed below
if (!isInstalled) return@DropdownMenu
DropdownMenuItem(
text = { Text(text = stringResource(R.string.action_info)) },
onClick = { onClick(MenuItem.APP_INFO) }
onClick = { onClick(MenuItem.APP_INFO) },
enabled = state is AppState.Installed || state is AppState.Updatable
)
DropdownMenuItem(
text = { Text(text = stringResource(R.string.action_home_screen)) },
onClick = { onClick(MenuItem.ADD_TO_HOME) }
onClick = { onClick(MenuItem.ADD_TO_HOME) },
enabled = state is AppState.Installed || state is AppState.Updatable
)
}
}
@@ -99,15 +92,11 @@ fun AppDetailsMenu(
@Preview(showBackground = true)
@Composable
private fun AppDetailsMenuPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
private fun AppDetailsMenuPreview() {
PreviewTemplate {
TopAppBar(
actions = {
AppDetailsMenu(
isInstalled = app.isInstalled,
isFavorite = true,
isExpanded = true
)
AppDetailsMenu(isFavorite = true, isExpanded = true)
}
)
}