mirror of
https://github.com/owenlejeune/TVTime.git
synced 2025-11-09 13:22:44 -05:00
make reviews card collapsable on smaller screens
This commit is contained in:
@@ -76,6 +76,7 @@ import com.owenlejeune.tvtime.api.tmdb.api.v3.model.DetailedMovie
|
||||
import com.owenlejeune.tvtime.api.tmdb.api.v3.model.DetailedTv
|
||||
import com.owenlejeune.tvtime.api.tmdb.api.v3.model.Genre
|
||||
import com.owenlejeune.tvtime.api.tmdb.api.v3.model.ImageCollection
|
||||
import com.owenlejeune.tvtime.api.tmdb.api.v3.model.Review
|
||||
import com.owenlejeune.tvtime.extensions.DateFormat
|
||||
import com.owenlejeune.tvtime.extensions.WindowSizeClass
|
||||
import com.owenlejeune.tvtime.extensions.combineWith
|
||||
@@ -99,6 +100,7 @@ import com.owenlejeune.tvtime.ui.components.ChipStyle
|
||||
import com.owenlejeune.tvtime.ui.components.CircleBackgroundColorImage
|
||||
import com.owenlejeune.tvtime.ui.components.ContentCard
|
||||
import com.owenlejeune.tvtime.ui.components.DetailHeader
|
||||
import com.owenlejeune.tvtime.ui.components.ExpandableContentCard
|
||||
import com.owenlejeune.tvtime.ui.components.ExternalIdsArea
|
||||
import com.owenlejeune.tvtime.ui.components.HtmlText
|
||||
import com.owenlejeune.tvtime.ui.components.ImageGalleryOverlay
|
||||
@@ -385,7 +387,7 @@ fun MediaViewContent(
|
||||
}
|
||||
|
||||
if (windowSize != WindowSizeClass.Expanded) {
|
||||
ReviewsCard(itemId = itemId, type = type, mainViewModel = mainViewModel)
|
||||
ReviewsCard(itemId = itemId, type = type, mainViewModel = mainViewModel, windowSize = windowSize)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -400,7 +402,7 @@ fun MediaViewContent(
|
||||
.weight(1f)
|
||||
.verticalScroll(state = rememberScrollState())
|
||||
) {
|
||||
ReviewsCard(itemId = itemId, type = type, mainViewModel = mainViewModel)
|
||||
ReviewsCard(itemId = itemId, type = type, mainViewModel = mainViewModel, windowSize = windowSize)
|
||||
|
||||
Spacer(modifier = Modifier.height(16.dp))
|
||||
}
|
||||
@@ -837,7 +839,12 @@ private fun SeasonCard(
|
||||
modifier = Modifier
|
||||
.padding(all = 12.dp)
|
||||
.clickable {
|
||||
appNavController.navigate(AppNavItem.DetailView.withArgs(MediaViewType.SEASON, itemId.combineWith(it.seasonNumber)))
|
||||
appNavController.navigate(
|
||||
AppNavItem.DetailView.withArgs(
|
||||
MediaViewType.SEASON,
|
||||
itemId.combineWith(it.seasonNumber)
|
||||
)
|
||||
)
|
||||
}
|
||||
) {
|
||||
PosterItem(
|
||||
@@ -1073,15 +1080,56 @@ private fun NextMcuProjectCard(
|
||||
private fun ReviewsCard(
|
||||
itemId: Int,
|
||||
type: MediaViewType,
|
||||
windowSize: WindowSizeClass,
|
||||
mainViewModel: MainViewModel,
|
||||
modifier: Modifier = Modifier
|
||||
) {
|
||||
val reviewsMap = remember { mainViewModel.produceReviewsFor(type) }
|
||||
val reviews = reviewsMap[itemId]
|
||||
|
||||
if (windowSize == WindowSizeClass.Expanded) {
|
||||
ListContentCard(
|
||||
modifier = modifier,
|
||||
header = {
|
||||
ReviewsCardHeader()
|
||||
},
|
||||
) {
|
||||
ReviewsCardContent(reviews = reviews)
|
||||
}
|
||||
} else {
|
||||
ExpandableContentCard(
|
||||
modifier = modifier,
|
||||
title = {
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.padding(horizontal = 16.dp)
|
||||
.padding(top = 16.dp)
|
||||
) {
|
||||
ReviewsCardHeader()
|
||||
}
|
||||
}
|
||||
) { isExpanded ->
|
||||
val reviewsSubList = reviews?.let {
|
||||
if (isExpanded) {
|
||||
reviews
|
||||
} else {
|
||||
reviews.subList(0, 3)
|
||||
}
|
||||
} ?: emptyList()
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(16.dp),
|
||||
verticalArrangement = Arrangement.spacedBy(8.dp)
|
||||
) {
|
||||
ReviewsCardContent(reviews = reviewsSubList)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun ReviewsCardHeader() {
|
||||
Column(
|
||||
verticalArrangement = Arrangement.spacedBy(9.dp)
|
||||
) {
|
||||
@@ -1134,7 +1182,11 @@ private fun ReviewsCard(
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun ReviewsCardContent(
|
||||
reviews: List<Review>?
|
||||
) {
|
||||
if (reviews?.isNotEmpty() == true) {
|
||||
reviews.reversed().forEachIndexed { index, review ->
|
||||
@@ -1197,7 +1249,6 @@ private fun ReviewsCard(
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun DetailsFor(
|
||||
|
||||
Reference in New Issue
Block a user