mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-06-07 16:29:55 +00:00
Add: Favorite argument to recycler & item
This commit is contained in:
parent
77b0cf91a0
commit
5bc860389a
@ -31,21 +31,23 @@ import com.looker.droidify.ui.compose.components.RepositoryItem
|
|||||||
fun ProductsVerticalRecycler(
|
fun ProductsVerticalRecycler(
|
||||||
productsList: List<Product>?,
|
productsList: List<Product>?,
|
||||||
repositories: Map<Long, Repository>,
|
repositories: Map<Long, Repository>,
|
||||||
|
favorites: Array<String> = emptyArray(),
|
||||||
modifier: Modifier = Modifier.fillMaxSize(),
|
modifier: Modifier = Modifier.fillMaxSize(),
|
||||||
onUserClick: (ProductItem) -> Unit = {},
|
onUserClick: (ProductItem) -> Unit = {},
|
||||||
onFavouriteClick: (ProductItem) -> Unit = {},
|
onFavouriteClick: (ProductItem) -> Unit = {},
|
||||||
getInstalled: (ProductItem) -> Installed? = {null},
|
getInstalled: (ProductItem) -> Installed? = { null },
|
||||||
onActionClick: (ProductItem) -> Unit = {}
|
onActionClick: (ProductItem) -> Unit = {}
|
||||||
) {
|
) {
|
||||||
VerticalItemList(list = productsList, modifier = modifier) {
|
VerticalItemList(list = productsList, modifier = modifier) {
|
||||||
it.toItem().let { item ->
|
it.toItem().let { item ->
|
||||||
ProductsListItem(
|
ProductsListItem(
|
||||||
item,
|
item = item,
|
||||||
repositories[item.repositoryId],
|
repo = repositories[item.repositoryId],
|
||||||
onUserClick,
|
isFavorite = favorites?.contains(item.packageName) == true,
|
||||||
onFavouriteClick,
|
onUserClick = onUserClick,
|
||||||
getInstalled.invoke(item),
|
onFavouriteClick = onFavouriteClick,
|
||||||
onActionClick
|
installed = getInstalled.invoke(item),
|
||||||
|
onActionClick = onActionClick
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,24 @@
|
|||||||
package com.looker.droidify.ui.compose.components
|
package com.looker.droidify.ui.compose.components
|
||||||
|
|
||||||
import androidx.compose.animation.AnimatedVisibility
|
import androidx.compose.animation.AnimatedVisibility
|
||||||
import androidx.compose.foundation.layout.*
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
|
import androidx.compose.foundation.layout.Box
|
||||||
|
import androidx.compose.foundation.layout.Column
|
||||||
|
import androidx.compose.foundation.layout.Row
|
||||||
|
import androidx.compose.foundation.layout.fillMaxHeight
|
||||||
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
|
import androidx.compose.foundation.layout.padding
|
||||||
|
import androidx.compose.foundation.layout.size
|
||||||
|
import androidx.compose.foundation.layout.wrapContentHeight
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.filled.Favorite
|
import androidx.compose.material.icons.filled.Favorite
|
||||||
import androidx.compose.material.icons.filled.FavoriteBorder
|
import androidx.compose.material.icons.filled.FavoriteBorder
|
||||||
import androidx.compose.material3.*
|
|
||||||
import androidx.compose.material3.ButtonDefaults.buttonColors
|
import androidx.compose.material3.ButtonDefaults.buttonColors
|
||||||
|
import androidx.compose.material3.FilledTonalButton
|
||||||
|
import androidx.compose.material3.Icon
|
||||||
|
import androidx.compose.material3.IconButton
|
||||||
|
import androidx.compose.material3.MaterialTheme
|
||||||
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
@ -17,6 +29,7 @@ import androidx.compose.ui.graphics.Color
|
|||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.text.style.TextOverflow
|
import androidx.compose.ui.text.style.TextOverflow
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
|
import com.looker.droidify.R
|
||||||
import com.looker.droidify.database.entity.Installed
|
import com.looker.droidify.database.entity.Installed
|
||||||
import com.looker.droidify.database.entity.Repository
|
import com.looker.droidify.database.entity.Repository
|
||||||
import com.looker.droidify.entity.ActionState
|
import com.looker.droidify.entity.ActionState
|
||||||
@ -29,6 +42,7 @@ import com.looker.droidify.ui.compose.utils.NetworkImage
|
|||||||
fun ProductsListItem(
|
fun ProductsListItem(
|
||||||
item: ProductItem,
|
item: ProductItem,
|
||||||
repo: Repository? = null,
|
repo: Repository? = null,
|
||||||
|
isFavorite: Boolean = false,
|
||||||
onUserClick: (ProductItem) -> Unit = {},
|
onUserClick: (ProductItem) -> Unit = {},
|
||||||
onFavouriteClick: (ProductItem) -> Unit = {},
|
onFavouriteClick: (ProductItem) -> Unit = {},
|
||||||
installed: Installed? = null,
|
installed: Installed? = null,
|
||||||
@ -54,6 +68,7 @@ fun ProductsListItem(
|
|||||||
ExpandedItemContent(
|
ExpandedItemContent(
|
||||||
item = product,
|
item = product,
|
||||||
installed = installed,
|
installed = installed,
|
||||||
|
favourite = isFavorite,
|
||||||
onFavourite = onFavouriteClick,
|
onFavourite = onFavouriteClick,
|
||||||
onActionClicked = onActionClick
|
onActionClicked = onActionClick
|
||||||
)
|
)
|
||||||
@ -128,7 +143,7 @@ fun ExpandedItemContent(
|
|||||||
IconButton(onClick = { onFavourite(item) }) {
|
IconButton(onClick = { onFavourite(item) }) {
|
||||||
Icon(
|
Icon(
|
||||||
imageVector = if (favourite) Icons.Default.Favorite else Icons.Default.FavoriteBorder,
|
imageVector = if (favourite) Icons.Default.Favorite else Icons.Default.FavoriteBorder,
|
||||||
contentDescription = "Add to Favourite",
|
contentDescription = stringResource(id = if (favourite) R.string.favorite_remove else R.string.favorite_add),
|
||||||
tint = if (favourite) Color.Red else MaterialTheme.colorScheme.outline
|
tint = if (favourite) Color.Red else MaterialTheme.colorScheme.outline
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user