mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-23 19:32:16 +00:00
Add: Installed to ProductListItem
This commit is contained in:
parent
3d4ff47a32
commit
099b1bdf28
@ -19,6 +19,7 @@ import androidx.compose.ui.graphics.Color
|
|||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.looker.droidify.R
|
import com.looker.droidify.R
|
||||||
|
import com.looker.droidify.database.entity.Installed
|
||||||
import com.looker.droidify.database.entity.Product
|
import com.looker.droidify.database.entity.Product
|
||||||
import com.looker.droidify.database.entity.Repository
|
import com.looker.droidify.database.entity.Repository
|
||||||
import com.looker.droidify.entity.ProductItem
|
import com.looker.droidify.entity.ProductItem
|
||||||
@ -34,6 +35,7 @@ fun ProductsVerticalRecycler(
|
|||||||
onUserClick: (ProductItem) -> Unit = {},
|
onUserClick: (ProductItem) -> Unit = {},
|
||||||
onFavouriteClick: (ProductItem) -> Unit = {},
|
onFavouriteClick: (ProductItem) -> Unit = {},
|
||||||
onInstallClick: (ProductItem) -> Unit = {}
|
onInstallClick: (ProductItem) -> Unit = {}
|
||||||
|
getInstalled: (ProductItem) -> Installed? = {null},
|
||||||
) {
|
) {
|
||||||
VerticalItemList(list = productsList, modifier = modifier) {
|
VerticalItemList(list = productsList, modifier = modifier) {
|
||||||
it.toItem().let { item ->
|
it.toItem().let { item ->
|
||||||
@ -43,6 +45,7 @@ fun ProductsVerticalRecycler(
|
|||||||
onUserClick,
|
onUserClick,
|
||||||
onFavouriteClick,
|
onFavouriteClick,
|
||||||
onInstallClick
|
onInstallClick
|
||||||
|
getInstalled.invoke(item),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -30,6 +30,7 @@ import androidx.compose.ui.res.painterResource
|
|||||||
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.R
|
||||||
|
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.ProductItem
|
import com.looker.droidify.entity.ProductItem
|
||||||
import com.looker.droidify.network.CoilDownloader
|
import com.looker.droidify.network.CoilDownloader
|
||||||
@ -43,6 +44,7 @@ fun ProductsListItem(
|
|||||||
onUserClick: (ProductItem) -> Unit = {},
|
onUserClick: (ProductItem) -> Unit = {},
|
||||||
onFavouriteClick: (ProductItem) -> Unit = {},
|
onFavouriteClick: (ProductItem) -> Unit = {},
|
||||||
onInstallClick: (ProductItem) -> Unit = {}
|
onInstallClick: (ProductItem) -> Unit = {}
|
||||||
|
installed: Installed? = null,
|
||||||
) {
|
) {
|
||||||
val product by remember(item) { mutableStateOf(item) }
|
val product by remember(item) { mutableStateOf(item) }
|
||||||
val imageData by remember(product, repo) {
|
val imageData by remember(product, repo) {
|
||||||
@ -63,6 +65,7 @@ fun ProductsListItem(
|
|||||||
expandedContent = {
|
expandedContent = {
|
||||||
ExpandedItemContent(
|
ExpandedItemContent(
|
||||||
item = product,
|
item = product,
|
||||||
|
installed = installed,
|
||||||
onFavourite = onFavouriteClick,
|
onFavourite = onFavouriteClick,
|
||||||
onInstallClicked = onInstallClick
|
onInstallClicked = onInstallClick
|
||||||
)
|
)
|
||||||
@ -123,6 +126,7 @@ fun ProductsListItem(
|
|||||||
fun ExpandedItemContent(
|
fun ExpandedItemContent(
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
item: ProductItem,
|
item: ProductItem,
|
||||||
|
installed: Installed? = null,
|
||||||
favourite: Boolean = false,
|
favourite: Boolean = false,
|
||||||
onFavourite: (ProductItem) -> Unit = {},
|
onFavourite: (ProductItem) -> Unit = {},
|
||||||
onInstallClicked: (ProductItem) -> Unit = {}
|
onInstallClicked: (ProductItem) -> Unit = {}
|
||||||
|
@ -71,6 +71,7 @@ class ExploreFragment : MainNavFragmentX() {
|
|||||||
private fun ExplorePage() {
|
private fun ExplorePage() {
|
||||||
val products by viewModel.primaryProducts.observeAsState(null)
|
val products by viewModel.primaryProducts.observeAsState(null)
|
||||||
val categories by viewModel.categories.observeAsState(emptyList())
|
val categories by viewModel.categories.observeAsState(emptyList())
|
||||||
|
val installedList by viewModel.installed.observeAsState(null)
|
||||||
val searchQuery by viewModel.searchQuery.observeAsState("")
|
val searchQuery by viewModel.searchQuery.observeAsState("")
|
||||||
|
|
||||||
AppTheme(
|
AppTheme(
|
||||||
@ -134,6 +135,7 @@ class ExploreFragment : MainNavFragmentX() {
|
|||||||
onFavouriteClick = {},
|
onFavouriteClick = {},
|
||||||
onInstallClick = {
|
onInstallClick = {
|
||||||
mainActivityX.syncConnection.binder?.installApps(listOf(it))
|
mainActivityX.syncConnection.binder?.installApps(listOf(it))
|
||||||
|
getInstalled = { installedList?.get(it.packageName) },
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -90,6 +90,7 @@ class InstalledFragment : MainNavFragmentX() {
|
|||||||
private fun InstalledPage() {
|
private fun InstalledPage() {
|
||||||
val primaryList by viewModel.primaryProducts.observeAsState(null)
|
val primaryList by viewModel.primaryProducts.observeAsState(null)
|
||||||
val secondaryList by viewModel.secondaryProducts.observeAsState(null)
|
val secondaryList by viewModel.secondaryProducts.observeAsState(null)
|
||||||
|
val installedList by viewModel.installed.observeAsState(null)
|
||||||
val searchQuery by viewModel.searchQuery.observeAsState("")
|
val searchQuery by viewModel.searchQuery.observeAsState("")
|
||||||
|
|
||||||
AppTheme(
|
AppTheme(
|
||||||
@ -224,6 +225,7 @@ class InstalledFragment : MainNavFragmentX() {
|
|||||||
onFavouriteClick = {},
|
onFavouriteClick = {},
|
||||||
onInstallClick = {
|
onInstallClick = {
|
||||||
mainActivityX.syncConnection.binder?.installApps(listOf(it))
|
mainActivityX.syncConnection.binder?.installApps(listOf(it))
|
||||||
|
getInstalled = { installedList?.get(it.packageName) },
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -82,6 +82,7 @@ class LatestFragment : MainNavFragmentX() {
|
|||||||
private fun LatestPage() {
|
private fun LatestPage() {
|
||||||
val primaryList by viewModel.primaryProducts.observeAsState(null)
|
val primaryList by viewModel.primaryProducts.observeAsState(null)
|
||||||
val secondaryList by viewModel.secondaryProducts.observeAsState(null)
|
val secondaryList by viewModel.secondaryProducts.observeAsState(null)
|
||||||
|
val installedList by viewModel.installed.observeAsState(null)
|
||||||
val searchQuery by viewModel.searchQuery.observeAsState("")
|
val searchQuery by viewModel.searchQuery.observeAsState("")
|
||||||
|
|
||||||
AppTheme(
|
AppTheme(
|
||||||
@ -162,6 +163,7 @@ class LatestFragment : MainNavFragmentX() {
|
|||||||
onFavouriteClick = {},
|
onFavouriteClick = {},
|
||||||
onInstallClick = {
|
onInstallClick = {
|
||||||
mainActivityX.syncConnection.binder?.installApps(listOf(it))
|
mainActivityX.syncConnection.binder?.installApps(listOf(it))
|
||||||
|
getInstalled = { installedList?.get(it.packageName) },
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -78,7 +78,7 @@ class MainNavFragmentViewModelX(
|
|||||||
|
|
||||||
val repositories = MediatorLiveData<List<Repository>>()
|
val repositories = MediatorLiveData<List<Repository>>()
|
||||||
val categories = MediatorLiveData<List<String>>()
|
val categories = MediatorLiveData<List<String>>()
|
||||||
val installed = MediatorLiveData<List<Installed>>()
|
val installed = MediatorLiveData<Map<String, Installed>>()
|
||||||
|
|
||||||
init {
|
init {
|
||||||
primaryProducts.addSource(
|
primaryProducts.addSource(
|
||||||
@ -125,7 +125,7 @@ class MainNavFragmentViewModelX(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
installed.postValue(it)
|
installed.postValue(it.associateBy { it.packageName })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user