compose: details: Update menu properly on state changed
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -253,11 +253,7 @@ private fun ScreenContentApp(
|
|||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun SetupMenu() {
|
fun SetupMenu() {
|
||||||
AppDetailsMenu(
|
AppDetailsMenu(isFavorite = isFavorite, state = state) { menuItem ->
|
||||||
isInstalled = app.isInstalled,
|
|
||||||
isFavorite = isFavorite,
|
|
||||||
state = state
|
|
||||||
) { menuItem ->
|
|
||||||
when (menuItem) {
|
when (menuItem) {
|
||||||
MenuItem.FAVORITE -> onFavorite()
|
MenuItem.FAVORITE -> onFavorite()
|
||||||
MenuItem.MANUAL_DOWNLOAD -> {
|
MenuItem.MANUAL_DOWNLOAD -> {
|
||||||
|
|||||||
@@ -20,17 +20,13 @@ import androidx.compose.ui.Modifier
|
|||||||
import androidx.compose.ui.res.painterResource
|
import androidx.compose.ui.res.painterResource
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
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.R
|
||||||
import com.aurora.store.compose.composable.TopAppBar
|
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.compose.preview.PreviewTemplate
|
||||||
import com.aurora.store.data.model.AppState
|
import com.aurora.store.data.model.AppState
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Menu for the app details screen
|
* 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 modifier The modifier to be applied to the composable
|
||||||
* @param onMenuItemClicked Callback when a menu item has been clicked
|
* @param onMenuItemClicked Callback when a menu item has been clicked
|
||||||
* @see MenuItem
|
* @see MenuItem
|
||||||
@@ -39,7 +35,6 @@ import com.aurora.store.data.model.AppState
|
|||||||
fun AppDetailsMenu(
|
fun AppDetailsMenu(
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
state: AppState = AppState.Unavailable,
|
state: AppState = AppState.Unavailable,
|
||||||
isInstalled: Boolean = false,
|
|
||||||
isFavorite: Boolean = false,
|
isFavorite: Boolean = false,
|
||||||
isExpanded: Boolean = false,
|
isExpanded: Boolean = false,
|
||||||
onMenuItemClicked: (menuItem: MenuItem) -> Unit = {}
|
onMenuItemClicked: (menuItem: MenuItem) -> Unit = {}
|
||||||
@@ -81,17 +76,15 @@ fun AppDetailsMenu(
|
|||||||
onClick = { onClick(MenuItem.MANUAL_DOWNLOAD) },
|
onClick = { onClick(MenuItem.MANUAL_DOWNLOAD) },
|
||||||
enabled = !state.inProgress()
|
enabled = !state.inProgress()
|
||||||
)
|
)
|
||||||
|
|
||||||
// Inflate actions available only when app is installed below
|
|
||||||
if (!isInstalled) return@DropdownMenu
|
|
||||||
|
|
||||||
DropdownMenuItem(
|
DropdownMenuItem(
|
||||||
text = { Text(text = stringResource(R.string.action_info)) },
|
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(
|
DropdownMenuItem(
|
||||||
text = { Text(text = stringResource(R.string.action_home_screen)) },
|
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)
|
@Preview(showBackground = true)
|
||||||
@Composable
|
@Composable
|
||||||
private fun AppDetailsMenuPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
|
private fun AppDetailsMenuPreview() {
|
||||||
PreviewTemplate {
|
PreviewTemplate {
|
||||||
TopAppBar(
|
TopAppBar(
|
||||||
actions = {
|
actions = {
|
||||||
AppDetailsMenu(
|
AppDetailsMenu(isFavorite = true, isExpanded = true)
|
||||||
isInstalled = app.isInstalled,
|
|
||||||
isFavorite = true,
|
|
||||||
isExpanded = true
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user