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.res.dimensionResource
|
||||||
import androidx.compose.ui.text.style.TextOverflow
|
import androidx.compose.ui.text.style.TextOverflow
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
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 androidx.compose.ui.viewinterop.AndroidView
|
||||||
import coil3.annotation.ExperimentalCoilApi
|
import coil3.annotation.ExperimentalCoilApi
|
||||||
import coil3.compose.AsyncImage
|
import coil3.compose.AsyncImage
|
||||||
@@ -33,6 +33,7 @@ import coil3.request.ImageRequest
|
|||||||
import coil3.request.crossfade
|
import coil3.request.crossfade
|
||||||
import com.aurora.gplayapi.data.models.Review
|
import com.aurora.gplayapi.data.models.Review
|
||||||
import com.aurora.store.R
|
import com.aurora.store.R
|
||||||
|
import com.aurora.store.compose.preview.ReviewPreviewProvider
|
||||||
import com.aurora.store.compose.preview.coilPreviewProvider
|
import com.aurora.store.compose.preview.coilPreviewProvider
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -98,15 +99,8 @@ fun ReviewComposable(modifier: Modifier = Modifier, review: Review) {
|
|||||||
@Preview(showBackground = true)
|
@Preview(showBackground = true)
|
||||||
@Composable
|
@Composable
|
||||||
@OptIn(ExperimentalCoilApi::class)
|
@OptIn(ExperimentalCoilApi::class)
|
||||||
private fun ReviewComposablePreview() {
|
private fun ReviewComposablePreview(@PreviewParameter(ReviewPreviewProvider::class) review: Review) {
|
||||||
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) {
|
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) {
|
||||||
ReviewComposable(
|
ReviewComposable(review = review)
|
||||||
review = Review(
|
|
||||||
userName = "Rahul Kumar Patel",
|
|
||||||
timeStamp = 1745750879,
|
|
||||||
comment = LoremIpsum(40).values.first(),
|
|
||||||
rating = 4
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import androidx.compose.ui.tooling.preview.PreviewParameterProvider
|
|||||||
import com.aurora.gplayapi.data.models.App
|
import com.aurora.gplayapi.data.models.App
|
||||||
import com.aurora.gplayapi.data.models.Artwork
|
import com.aurora.gplayapi.data.models.Artwork
|
||||||
import com.aurora.gplayapi.data.models.Rating
|
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.gplayapi.data.models.details.TestingProgram
|
||||||
import com.aurora.store.BuildConfig
|
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.WindowAdaptiveInfo
|
||||||
import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo
|
import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.runtime.CompositionLocalProvider
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.runtime.saveable.rememberSaveable
|
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.painterResource
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
|
import androidx.compose.ui.tooling.preview.PreviewParameter
|
||||||
import androidx.hilt.navigation.compose.hiltViewModel
|
import androidx.hilt.navigation.compose.hiltViewModel
|
||||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||||
import androidx.paging.LoadState
|
import androidx.paging.LoadState
|
||||||
@@ -36,14 +38,19 @@ import androidx.paging.compose.LazyPagingItems
|
|||||||
import androidx.paging.compose.collectAsLazyPagingItems
|
import androidx.paging.compose.collectAsLazyPagingItems
|
||||||
import androidx.paging.compose.itemKey
|
import androidx.paging.compose.itemKey
|
||||||
import androidx.window.core.layout.WindowWidthSizeClass
|
import androidx.window.core.layout.WindowWidthSizeClass
|
||||||
|
import coil3.annotation.ExperimentalCoilApi
|
||||||
|
import coil3.compose.LocalAsyncImagePreviewHandler
|
||||||
import com.aurora.extensions.adaptiveNavigationIcon
|
import com.aurora.extensions.adaptiveNavigationIcon
|
||||||
import com.aurora.gplayapi.data.models.Review
|
import com.aurora.gplayapi.data.models.Review
|
||||||
import com.aurora.store.R
|
import com.aurora.store.R
|
||||||
import com.aurora.store.compose.composables.TopAppBarComposable
|
import com.aurora.store.compose.composables.TopAppBarComposable
|
||||||
import com.aurora.store.compose.composables.details.ReviewComposable
|
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.details.AppDetailsViewModel
|
||||||
import com.aurora.store.viewmodel.review.DetailsReviewViewModel
|
import com.aurora.store.viewmodel.review.DetailsReviewViewModel
|
||||||
import kotlinx.coroutines.flow.flowOf
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
|
import kotlin.random.Random
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun DetailsReviewScreen(
|
fun DetailsReviewScreen(
|
||||||
@@ -165,10 +172,12 @@ private fun FilterHeader(onClick: (filter: Review.Filter) -> Unit) {
|
|||||||
|
|
||||||
@Preview
|
@Preview
|
||||||
@Composable
|
@Composable
|
||||||
private fun DetailsReviewScreenPreview() {
|
@OptIn(ExperimentalCoilApi::class)
|
||||||
val reviews = flowOf(PagingData.empty<Review>()).collectAsLazyPagingItems()
|
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(
|
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) {
|
||||||
reviews = reviews
|
ScreenContent(reviews = reviewsFlow)
|
||||||
)
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user