compose: details: Add preview for reviews

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2025-06-27 14:32:41 +08:00
parent 2eb4dd4abe
commit d353115ae7
4 changed files with 45 additions and 17 deletions

View File

@@ -24,7 +24,7 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.datasource.LoremIpsum
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.viewinterop.AndroidView
import coil3.annotation.ExperimentalCoilApi
import coil3.compose.AsyncImage
@@ -33,6 +33,7 @@ import coil3.request.ImageRequest
import coil3.request.crossfade
import com.aurora.gplayapi.data.models.Review
import com.aurora.store.R
import com.aurora.store.compose.preview.ReviewPreviewProvider
import com.aurora.store.compose.preview.coilPreviewProvider
/**
@@ -98,15 +99,8 @@ fun ReviewComposable(modifier: Modifier = Modifier, review: Review) {
@Preview(showBackground = true)
@Composable
@OptIn(ExperimentalCoilApi::class)
private fun ReviewComposablePreview() {
private fun ReviewComposablePreview(@PreviewParameter(ReviewPreviewProvider::class) review: Review) {
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) {
ReviewComposable(
review = Review(
userName = "Rahul Kumar Patel",
timeStamp = 1745750879,
comment = LoremIpsum(40).values.first(),
rating = 4
)
)
ReviewComposable(review = review)
}
}

View File

@@ -10,7 +10,6 @@ import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import com.aurora.gplayapi.data.models.App
import com.aurora.gplayapi.data.models.Artwork
import com.aurora.gplayapi.data.models.Rating
import com.aurora.gplayapi.data.models.Support
import com.aurora.gplayapi.data.models.details.TestingProgram
import com.aurora.store.BuildConfig

View File

@@ -0,0 +1,26 @@
/*
* SPDX-FileCopyrightText: 2025 The Calyx Institute
* SPDX-License-Identifier: GPL-3.0-or-later
*/
package com.aurora.store.compose.preview
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import androidx.compose.ui.tooling.preview.datasource.LoremIpsum
import com.aurora.gplayapi.data.models.Review
/**
* Preview provider for composable working with [Review]
*/
class ReviewPreviewProvider : PreviewParameterProvider<Review> {
override val values: Sequence<Review>
get() = sequenceOf(
Review(
userName = "Rahul Kumar Patel",
timeStamp = 1745750879,
rating = 4,
comment = LoremIpsum(40).values.first()
)
)
}

View File

@@ -19,6 +19,7 @@ import androidx.compose.material3.Text
import androidx.compose.material3.adaptive.WindowAdaptiveInfo
import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
@@ -28,6 +29,7 @@ import androidx.compose.ui.res.dimensionResource
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 androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.paging.LoadState
@@ -36,14 +38,19 @@ import androidx.paging.compose.LazyPagingItems
import androidx.paging.compose.collectAsLazyPagingItems
import androidx.paging.compose.itemKey
import androidx.window.core.layout.WindowWidthSizeClass
import coil3.annotation.ExperimentalCoilApi
import coil3.compose.LocalAsyncImagePreviewHandler
import com.aurora.extensions.adaptiveNavigationIcon
import com.aurora.gplayapi.data.models.Review
import com.aurora.store.R
import com.aurora.store.compose.composables.TopAppBarComposable
import com.aurora.store.compose.composables.details.ReviewComposable
import com.aurora.store.compose.preview.ReviewPreviewProvider
import com.aurora.store.compose.preview.coilPreviewProvider
import com.aurora.store.viewmodel.details.AppDetailsViewModel
import com.aurora.store.viewmodel.review.DetailsReviewViewModel
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.MutableStateFlow
import kotlin.random.Random
@Composable
fun DetailsReviewScreen(
@@ -165,10 +172,12 @@ private fun FilterHeader(onClick: (filter: Review.Filter) -> Unit) {
@Preview
@Composable
private fun DetailsReviewScreenPreview() {
val reviews = flowOf(PagingData.empty<Review>()).collectAsLazyPagingItems()
@OptIn(ExperimentalCoilApi::class)
private fun DetailsReviewScreenPreview(@PreviewParameter(ReviewPreviewProvider::class) review: Review) {
val reviews = List(10) { review.copy(commentId = Random.nextInt().toString()) }
val reviewsFlow = MutableStateFlow(PagingData.from(reviews)).collectAsLazyPagingItems()
ScreenContent(
reviews = reviews
)
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) {
ScreenContent(reviews = reviewsFlow)
}
}