compose: Fix previews for every screen
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -45,7 +45,8 @@ fun ScreenshotListItem(modifier: Modifier = Modifier, url: String) {
|
||||
)
|
||||
val state by painter.state.collectAsStateWithLifecycle()
|
||||
val aspectRatioModifier = state.painter?.intrinsicSize?.let { intrinsicSize ->
|
||||
Modifier.aspectRatio(ratio = intrinsicSize.width / intrinsicSize.height)
|
||||
val ratio = intrinsicSize.width / intrinsicSize.height
|
||||
if (ratio.isNaN()) null else Modifier.aspectRatio(ratio = ratio)
|
||||
}
|
||||
|
||||
Image(
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* 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 com.aurora.store.BuildConfig
|
||||
import com.aurora.store.data.room.favourite.Favourite
|
||||
import com.aurora.store.data.room.favourite.Favourite.Mode
|
||||
|
||||
/**
|
||||
* Preview provider for composable working with [Favourite]
|
||||
*/
|
||||
class FavouritePreviewProvider() : PreviewParameterProvider<Favourite> {
|
||||
|
||||
override val values: Sequence<Favourite>
|
||||
get() = sequenceOf(
|
||||
Favourite(
|
||||
packageName = BuildConfig.APPLICATION_ID,
|
||||
displayName = "Aurora Store",
|
||||
iconURL = "",
|
||||
added = 0L,
|
||||
mode = Mode.MANUAL
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -53,6 +53,7 @@ import com.aurora.extensions.requiresObbDir
|
||||
import com.aurora.extensions.share
|
||||
import com.aurora.extensions.toast
|
||||
import com.aurora.gplayapi.data.models.App
|
||||
import com.aurora.gplayapi.data.models.Artwork
|
||||
import com.aurora.gplayapi.data.models.Review
|
||||
import com.aurora.store.R
|
||||
import com.aurora.store.compose.composable.Error
|
||||
|
||||
@@ -38,7 +38,7 @@ import com.aurora.store.compose.preview.AppPreviewProvider
|
||||
import com.aurora.store.compose.preview.coilPreviewProvider
|
||||
import com.aurora.store.viewmodel.details.DevProfileViewModel
|
||||
import com.aurora.store.viewmodel.search.SearchViewModel
|
||||
import kotlinx.coroutines.flow.flowOf
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlin.random.Random
|
||||
|
||||
/**
|
||||
@@ -132,7 +132,7 @@ private fun ScreenContent(
|
||||
private fun DevProfileScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
|
||||
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) {
|
||||
val apps = List(10) { app.copy(id = Random.nextInt()) }
|
||||
val pagedApps = flowOf(PagingData.from(apps)).collectAsLazyPagingItems()
|
||||
val pagedApps = MutableStateFlow(PagingData.from(apps)).collectAsLazyPagingItems()
|
||||
|
||||
ScreenContent(
|
||||
topAppBarTitle = app.developerName,
|
||||
|
||||
@@ -13,6 +13,7 @@ import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.material3.Scaffold
|
||||
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
|
||||
@@ -23,11 +24,14 @@ 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.lifecycle.viewmodel.compose.hiltViewModel
|
||||
import androidx.paging.LoadState
|
||||
import androidx.paging.PagingData
|
||||
import androidx.paging.compose.LazyPagingItems
|
||||
import androidx.paging.compose.collectAsLazyPagingItems
|
||||
import androidx.paging.compose.itemKey
|
||||
import coil3.compose.LocalAsyncImagePreviewHandler
|
||||
import com.aurora.extensions.toast
|
||||
import com.aurora.store.R
|
||||
import com.aurora.store.compose.composable.DownloadListItem
|
||||
@@ -35,10 +39,16 @@ import com.aurora.store.compose.composable.Error
|
||||
import com.aurora.store.compose.composable.ContainedLoadingIndicator
|
||||
import com.aurora.store.compose.composable.TopAppBar
|
||||
import com.aurora.extensions.emptyPagingItems
|
||||
import com.aurora.gplayapi.data.models.App
|
||||
import com.aurora.store.compose.preview.AppPreviewProvider
|
||||
import com.aurora.store.compose.preview.coilPreviewProvider
|
||||
import com.aurora.store.compose.ui.downloads.menu.DownloadsMenu
|
||||
import com.aurora.store.compose.ui.downloads.menu.MenuItem
|
||||
import com.aurora.store.data.model.DownloadStatus
|
||||
import com.aurora.store.data.room.download.Download
|
||||
import com.aurora.store.viewmodel.downloads.DownloadsViewModel
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlin.random.Random
|
||||
|
||||
@Composable
|
||||
fun DownloadsScreen(
|
||||
@@ -171,6 +181,15 @@ private fun ScreenContent(
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
private fun DownloadsScreenPreview() {
|
||||
ScreenContent()
|
||||
private fun DownloadsScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
|
||||
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) {
|
||||
val downloads = List(10) {
|
||||
Download.fromApp(app).copy(
|
||||
packageName = Random.nextInt().toString(),
|
||||
status = DownloadStatus.entries.random()
|
||||
)
|
||||
}
|
||||
val pagedDownloads = MutableStateFlow(PagingData.from(downloads)).collectAsLazyPagingItems()
|
||||
ScreenContent(downloads = pagedDownloads)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.material3.Scaffold
|
||||
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
|
||||
@@ -23,11 +24,14 @@ 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.lifecycle.viewmodel.compose.hiltViewModel
|
||||
import androidx.paging.LoadState
|
||||
import androidx.paging.PagingData
|
||||
import androidx.paging.compose.LazyPagingItems
|
||||
import androidx.paging.compose.collectAsLazyPagingItems
|
||||
import androidx.paging.compose.itemKey
|
||||
import coil3.compose.LocalAsyncImagePreviewHandler
|
||||
import com.aurora.Constants.JSON_MIME_TYPE
|
||||
import com.aurora.extensions.toast
|
||||
import com.aurora.store.R
|
||||
@@ -36,11 +40,15 @@ import com.aurora.store.compose.composable.FavouriteListItem
|
||||
import com.aurora.store.compose.composable.ContainedLoadingIndicator
|
||||
import com.aurora.store.compose.composable.TopAppBar
|
||||
import com.aurora.extensions.emptyPagingItems
|
||||
import com.aurora.store.compose.preview.FavouritePreviewProvider
|
||||
import com.aurora.store.compose.preview.coilPreviewProvider
|
||||
import com.aurora.store.compose.ui.favourite.menu.FavouriteMenu
|
||||
import com.aurora.store.compose.ui.favourite.menu.MenuItem
|
||||
import com.aurora.store.data.room.favourite.Favourite
|
||||
import com.aurora.store.viewmodel.all.FavouriteViewModel
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import java.util.Calendar
|
||||
import kotlin.random.Random
|
||||
|
||||
@Composable
|
||||
fun FavouriteScreen(
|
||||
@@ -172,6 +180,15 @@ private fun ScreenContent(
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
private fun FavouriteScreenPreview() {
|
||||
ScreenContent()
|
||||
private fun FavouriteScreenPreview(
|
||||
@PreviewParameter(FavouritePreviewProvider ::class) favourite: Favourite
|
||||
) {
|
||||
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) {
|
||||
val favourites = List(10) {
|
||||
favourite.copy(packageName = "${favourite.packageName}.${Random.nextInt()}")
|
||||
}
|
||||
val flow = MutableStateFlow(PagingData.from(favourites)).collectAsLazyPagingItems()
|
||||
|
||||
ScreenContent(favourites = flow)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,8 +76,8 @@ import com.aurora.store.compose.ui.details.AppDetailsScreen
|
||||
import com.aurora.store.data.model.SearchFilter
|
||||
import com.aurora.store.viewmodel.search.SearchViewModel
|
||||
import kotlinx.coroutines.android.awaitFrame
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.collectLatest
|
||||
import kotlinx.coroutines.flow.flowOf
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlin.random.Random
|
||||
|
||||
@@ -417,7 +417,7 @@ private fun FilterHeader(
|
||||
@Composable
|
||||
private fun SearchScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
|
||||
val apps = List(10) { app.copy(id = Random.nextInt()) }
|
||||
val results = flowOf(PagingData.from(apps)).collectAsLazyPagingItems()
|
||||
val results = MutableStateFlow(PagingData.from(apps)).collectAsLazyPagingItems()
|
||||
|
||||
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) {
|
||||
ScreenContent(results = results)
|
||||
|
||||
Reference in New Issue
Block a user