compose: details: Add preview for reviews
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
26
app/src/main/java/com/aurora/store/compose/preview/Review.kt
Normal file
26
app/src/main/java/com/aurora/store/compose/preview/Review.kt
Normal 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()
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user