compose: Setup and use a default template for previews

Also load default app theme for previews

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2025-11-10 14:01:56 +08:00
parent 1f69ecc9de
commit da7890cffe
54 changed files with 314 additions and 193 deletions

View File

@@ -31,6 +31,7 @@ import androidx.core.graphics.drawable.toBitmap
import androidx.core.graphics.drawable.toDrawable import androidx.core.graphics.drawable.toDrawable
import com.aurora.store.BuildConfig import com.aurora.store.BuildConfig
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
/** /**
* Composable for displaying package details in a list for blacklisting * Composable for displaying package details in a list for blacklisting
@@ -103,13 +104,15 @@ fun BlackListItem(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun BlackListItemPreview() { private fun BlackListItemPreview() {
BlackListItem( PreviewTemplate {
icon = Color.GRAY.toDrawable().toBitmap(56, 56), BlackListItem(
displayName = LocalContext.current.getString(R.string.app_name), icon = Color.GRAY.toDrawable().toBitmap(56, 56),
packageName = BuildConfig.APPLICATION_ID, displayName = LocalContext.current.getString(R.string.app_name),
versionName = BuildConfig.VERSION_NAME, packageName = BuildConfig.APPLICATION_ID,
versionCode = BuildConfig.VERSION_CODE.toLong(), versionName = BuildConfig.VERSION_NAME,
isChecked = true, versionCode = BuildConfig.VERSION_CODE.toLong(),
isEnabled = false isChecked = true,
) isEnabled = false
)
}
} }

View File

@@ -16,6 +16,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.dimensionResource import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
/** /**
* Composable to display an indeterminate loading indicator that fills all available screen * Composable to display an indeterminate loading indicator that fills all available screen
@@ -38,5 +39,7 @@ fun ContainedLoadingIndicator(modifier: Modifier = Modifier) {
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun ContainedLoadingIndicatorPreview() { private fun ContainedLoadingIndicatorPreview() {
ContainedLoadingIndicator() PreviewTemplate {
ContainedLoadingIndicator()
}
} }

View File

@@ -33,7 +33,6 @@ import androidx.compose.material3.Text
import androidx.compose.material3.TextButton import androidx.compose.material3.TextButton
import androidx.compose.material3.VerticalDivider import androidx.compose.material3.VerticalDivider
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.remember import androidx.compose.runtime.remember
@@ -48,12 +47,11 @@ import androidx.compose.ui.res.stringResource
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.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import coil3.compose.LocalAsyncImagePreviewHandler
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composable.app.AnimatedAppIcon import com.aurora.store.compose.composable.app.AnimatedAppIcon
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.coilPreviewProvider import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.data.model.DownloadStatus import com.aurora.store.data.model.DownloadStatus
import com.aurora.store.data.room.download.Download import com.aurora.store.data.room.download.Download
import com.aurora.store.util.CommonUtil.getETAString import com.aurora.store.util.CommonUtil.getETAString
@@ -243,7 +241,7 @@ fun DownloadListItem(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun DownloadListItemPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun DownloadListItemPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) { PreviewTemplate {
DownloadListItem(download = Download.fromApp(app)) DownloadListItem(download = Download.fromApp(app))
} }
} }

View File

@@ -25,6 +25,7 @@ import androidx.compose.ui.text.style.TextAlign
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 com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
/** /**
* Composable to show error message that fills all available screen * Composable to show error message that fills all available screen
@@ -78,9 +79,11 @@ fun Error(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun ErrorPreview() { private fun ErrorPreview() {
Error( PreviewTemplate {
painter = painterResource(R.drawable.ic_updates), Error(
message = stringResource(R.string.details_no_updates), painter = painterResource(R.drawable.ic_updates),
actionMessage = stringResource(R.string.check_updates) message = stringResource(R.string.details_no_updates),
) actionMessage = stringResource(R.string.check_updates)
)
}
} }

View File

@@ -22,7 +22,6 @@ import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
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.remember import androidx.compose.runtime.remember
@@ -40,13 +39,12 @@ 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.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import coil3.compose.AsyncImage import coil3.compose.AsyncImage
import coil3.compose.LocalAsyncImagePreviewHandler
import coil3.request.ImageRequest import coil3.request.ImageRequest
import coil3.request.crossfade import coil3.request.crossfade
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.coilPreviewProvider import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.data.room.favourite.Favourite import com.aurora.store.data.room.favourite.Favourite
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@@ -141,7 +139,7 @@ fun FavouriteListItem(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun FavouriteListItemPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun FavouriteListItemPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) { PreviewTemplate {
FavouriteListItem(favourite = Favourite.fromApp(app, Favourite.Mode.MANUAL)) FavouriteListItem(favourite = Favourite.fromApp(app, Favourite.Mode.MANUAL))
} }
} }

View File

@@ -25,6 +25,7 @@ import androidx.compose.ui.res.stringResource
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 com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
/** /**
* Composable to display sticky header in list * Composable to display sticky header in list
@@ -82,9 +83,11 @@ fun Header(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun HeaderPreview() { private fun HeaderPreview() {
Header( PreviewTemplate {
title = stringResource(R.string.details_privacy), Header(
subtitle = stringResource(R.string.exodus_powered), title = stringResource(R.string.details_privacy),
onClick = {} subtitle = stringResource(R.string.exodus_powered),
) onClick = {}
)
}
} }

View File

@@ -30,6 +30,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameter
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
/** /**
* Composable to show some information * Composable to show some information
@@ -83,9 +84,11 @@ fun Info(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun InfoPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun InfoPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
Info( PreviewTemplate {
title = AnnotatedString(text = stringResource(R.string.details_dev_website)), Info(
description = AnnotatedString.fromHtml(htmlString = app.developerWebsite), title = AnnotatedString(text = stringResource(R.string.details_dev_website)),
painter = painterResource(R.drawable.ic_network) description = AnnotatedString.fromHtml(htmlString = app.developerWebsite),
) painter = painterResource(R.drawable.ic_network)
)
}
} }

View File

@@ -31,6 +31,8 @@ import coil3.compose.AsyncImage
import coil3.request.ImageRequest import coil3.request.ImageRequest
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.data.model.Link import com.aurora.store.data.model.Link
import androidx.compose.ui.res.stringResource
import com.aurora.store.compose.preview.PreviewTemplate
/** /**
* Composable to show link details in a list * Composable to show link details in a list
@@ -84,13 +86,15 @@ fun LinkListItem(modifier: Modifier = Modifier, link: Link, onClick: () -> Unit
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun LinkListItemPreview() { private fun LinkListItemPreview() {
LinkListItem( PreviewTemplate {
link = Link( LinkListItem(
id = 0, link = Link(
title = LocalContext.current.getString(R.string.title_about), id = 0,
subtitle = LocalContext.current.getString(R.string.about_aurora_store_subtitle), title = stringResource(R.string.title_about),
url = "https://auroraoss.com/", subtitle = stringResource(R.string.about_aurora_store_subtitle),
icon = R.drawable.ic_menu_about url = "https://auroraoss.com/",
icon = R.drawable.ic_menu_about
)
) )
) }
} }

View File

@@ -24,6 +24,7 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.dimensionResource import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
/** /**
* Pager indicator * Pager indicator
@@ -74,5 +75,7 @@ fun PageIndicator(modifier: Modifier = Modifier, totalPages: Int, currentPage: I
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun PageIndicatorPreview() { private fun PageIndicatorPreview() {
PageIndicator(totalPages = 5) PreviewTemplate {
PageIndicator(totalPages = 5)
}
} }

View File

@@ -16,12 +16,12 @@ import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.dimensionResource import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
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 com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.data.model.Permission import com.aurora.store.data.model.Permission
import com.aurora.store.data.model.PermissionType import com.aurora.store.data.model.PermissionType
@@ -73,12 +73,14 @@ fun PermissionListItem(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun PermissionListItemPreview() { private fun PermissionListItemPreview() {
PermissionListItem( PreviewTemplate {
permission = Permission( PermissionListItem(
PermissionType.STORAGE_MANAGER, permission = Permission(
LocalContext.current.getString(R.string.onboarding_permission_esm), PermissionType.STORAGE_MANAGER,
LocalContext.current.getString(R.string.onboarding_permission_esa_desc), stringResource(R.string.onboarding_permission_esm),
false stringResource(R.string.onboarding_permission_esa_desc),
false
)
) )
) }
} }

View File

@@ -29,6 +29,7 @@ import coil3.request.ImageRequest
import coil3.request.crossfade import coil3.request.crossfade
import com.aurora.gplayapi.SearchSuggestEntry import com.aurora.gplayapi.SearchSuggestEntry
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
/** /**
* Composable for displaying search suggestions in a list * Composable for displaying search suggestions in a list
@@ -98,7 +99,9 @@ fun SearchSuggestionListItem(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun SearchSuggestionListItemPreview() { private fun SearchSuggestionListItemPreview() {
SearchSuggestionListItem( PreviewTemplate {
searchSuggestEntry = SearchSuggestEntry.getDefaultInstance() SearchSuggestionListItem(
) searchSuggestEntry = SearchSuggestEntry.getDefaultInstance()
)
}
} }

View File

@@ -16,6 +16,7 @@ import androidx.compose.ui.res.stringResource
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 com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
/** /**
* Composable to display a sticky header in a list * Composable to display a sticky header in a list
@@ -40,5 +41,7 @@ fun TextDividerComposable(modifier: Modifier = Modifier, title: String) {
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun TextDividerComposablePreview() { private fun TextDividerComposablePreview() {
TextDividerComposable(title = stringResource(R.string.item_optional)) PreviewTemplate {
TextDividerComposable(title = stringResource(R.string.item_optional))
}
} }

View File

@@ -17,6 +17,7 @@ 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 com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
/** /**
* A top app bar composable to be used with Scaffold in different Screen * A top app bar composable to be used with Scaffold in different Screen
@@ -54,8 +55,10 @@ fun TopAppBar(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun TopAppBarPreview() { private fun TopAppBarPreview() {
TopAppBar( PreviewTemplate {
title = stringResource(R.string.title_about), TopAppBar(
onNavigateUp = {} title = stringResource(R.string.title_about),
) onNavigateUp = {}
)
}
} }

View File

@@ -33,6 +33,7 @@ import coil3.request.crossfade
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.coilPreviewProvider import com.aurora.store.compose.preview.coilPreviewProvider
/** /**
@@ -109,7 +110,7 @@ private fun AnimatedAppIconPreview(@PreviewParameter(AppPreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun AnimatedAppIconPreview(@PreviewParameter(ProgressProvider::class) progress: Float) { private fun AnimatedAppIconPreview(@PreviewParameter(ProgressProvider::class) progress: Float) {
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) { PreviewTemplate {
AnimatedAppIcon( AnimatedAppIcon(
modifier = Modifier.requiredSize(dimensionResource(R.dimen.icon_size_large)), modifier = Modifier.requiredSize(dimensionResource(R.dimen.icon_size_large)),
iconUrl = "", iconUrl = "",

View File

@@ -15,7 +15,6 @@ import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.layout.ContentScale
@@ -25,13 +24,12 @@ 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.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import coil3.compose.AsyncImage import coil3.compose.AsyncImage
import coil3.compose.LocalAsyncImagePreviewHandler
import coil3.request.ImageRequest import coil3.request.ImageRequest
import coil3.request.crossfade import coil3.request.crossfade
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.coilPreviewProvider import com.aurora.store.compose.preview.PreviewTemplate
/** /**
* Composable for displaying minimal app details in a horizontal-scrollable list * Composable for displaying minimal app details in a horizontal-scrollable list
@@ -81,7 +79,7 @@ fun AppListItem(modifier: Modifier = Modifier, app: App, onClick: () -> Unit = {
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun AppListItemPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun AppListItemPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) { PreviewTemplate {
AppListItem(app = app) AppListItem(app = app)
} }
} }

View File

@@ -15,7 +15,6 @@ import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.layout.ContentScale
@@ -26,14 +25,13 @@ 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.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import coil3.compose.AsyncImage import coil3.compose.AsyncImage
import coil3.compose.LocalAsyncImagePreviewHandler
import coil3.request.ImageRequest import coil3.request.ImageRequest
import coil3.request.crossfade import coil3.request.crossfade
import com.aurora.extensions.requiresGMS import com.aurora.extensions.requiresGMS
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.coilPreviewProvider import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.util.CommonUtil import com.aurora.store.util.CommonUtil
/** /**
@@ -86,7 +84,7 @@ fun LargeAppListItem(modifier: Modifier = Modifier, app: App, onClick: () -> Uni
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
fun LargeAppListItemPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { fun LargeAppListItemPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) { PreviewTemplate {
LargeAppListItem(app = app) LargeAppListItem(app = app)
} }
} }

View File

@@ -16,6 +16,7 @@ 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 com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
/** /**
* Composable to show a tag related to an app * Composable to show a tag related to an app
@@ -43,8 +44,10 @@ fun TagListItem(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun TagListItemPreview() { private fun TagListItemPreview() {
TagListItem( PreviewTemplate {
label = stringResource(R.string.details_free), TagListItem(
painter = painterResource(R.drawable.ic_paid) label = stringResource(R.string.details_free),
) painter = painterResource(R.drawable.ic_paid)
)
}
} }

View File

@@ -15,6 +15,7 @@ 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 com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.data.model.ExodusTracker import com.aurora.store.data.model.ExodusTracker
/** /**
@@ -49,11 +50,13 @@ fun ExodusListItem(modifier: Modifier = Modifier, tracker: ExodusTracker) {
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun ExodusListItemPreview() { private fun ExodusListItemPreview() {
ExodusListItem( PreviewTemplate {
tracker = ExodusTracker( ExodusListItem(
name = "Google Analytics", tracker = ExodusTracker(
signature = "com.google.android.apps.analytics.|com.google.android.gms.analytics.|com.google.analytics.", name = "Google Analytics",
date = "2017-09-24" signature = "com.google.android.apps.analytics.|com.google.android.gms.analytics.|com.google.analytics.",
date = "2017-09-24"
)
) )
) }
} }

View File

@@ -20,6 +20,7 @@ import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
/** /**
* Composable to show a progress bar with rating for an app * Composable to show a progress bar with rating for an app
@@ -53,5 +54,7 @@ fun RatingListItem(modifier: Modifier = Modifier, label: String, rating: Float)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun RatingListItemPreview() { private fun RatingListItemPreview() {
RatingListItem(label = "5", rating = 0.5F) PreviewTemplate {
RatingListItem(label = "5", rating = 0.5F)
}
} }

View File

@@ -16,7 +16,6 @@ import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.layout.ContentScale
@@ -27,13 +26,12 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.viewinterop.AndroidView import androidx.compose.ui.viewinterop.AndroidView
import coil3.compose.AsyncImage import coil3.compose.AsyncImage
import coil3.compose.LocalAsyncImagePreviewHandler
import coil3.request.ImageRequest 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.PreviewTemplate
import com.aurora.store.compose.preview.ReviewPreviewProvider import com.aurora.store.compose.preview.ReviewPreviewProvider
import com.aurora.store.compose.preview.coilPreviewProvider
/** /**
* Composable for viewing a review about an app * Composable for viewing a review about an app
@@ -98,7 +96,7 @@ fun ReviewListItem(modifier: Modifier = Modifier, review: Review) {
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun ReviewListItemPreview(@PreviewParameter(ReviewPreviewProvider::class) review: Review) { private fun ReviewListItemPreview(@PreviewParameter(ReviewPreviewProvider::class) review: Review) {
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) { PreviewTemplate {
ReviewListItem(review = review) ReviewListItem(review = review)
} }
} }

View File

@@ -8,7 +8,6 @@ package com.aurora.store.compose.composable.details
import androidx.compose.foundation.Image import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.aspectRatio
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.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.layout.ContentScale
@@ -17,7 +16,6 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.compose.collectAsStateWithLifecycle
import coil3.compose.AsyncImagePainter import coil3.compose.AsyncImagePainter
import coil3.compose.LocalAsyncImagePreviewHandler
import coil3.compose.rememberAsyncImagePainter import coil3.compose.rememberAsyncImagePainter
import coil3.compose.rememberConstraintsSizeResolver import coil3.compose.rememberConstraintsSizeResolver
import coil3.request.ImageRequest import coil3.request.ImageRequest
@@ -25,7 +23,7 @@ import coil3.request.crossfade
import com.aurora.extensions.shimmer import com.aurora.extensions.shimmer
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.coilPreviewProvider import com.aurora.store.compose.preview.PreviewTemplate
/** /**
* Composable to display a screenshot of an app * Composable to display a screenshot of an app
@@ -63,7 +61,7 @@ fun ScreenshotListItem(modifier: Modifier = Modifier, url: String) {
@Preview @Preview
@Composable @Composable
private fun ScreenshotListItemPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun ScreenshotListItemPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) { PreviewTemplate {
ScreenshotListItem(url = app.screenshots.firstOrNull()?.url ?: "") ScreenshotListItem(url = app.screenshots.firstOrNull()?.url ?: "")
} }
} }

View File

@@ -0,0 +1,23 @@
/*
* SPDX-FileCopyrightText: 2025 The Calyx Institute
* SPDX-License-Identifier: GPL-3.0-or-later
*/
package com.aurora.store.compose.preview
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import coil3.compose.LocalAsyncImagePreviewHandler
import com.aurora.store.compose.theme.AuroraTheme
/**
* Template for previewing composable with default theme and remote image handling
*/
@Composable
fun PreviewTemplate(content : @Composable () -> Unit) {
AuroraTheme {
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) {
content()
}
}
}

View File

@@ -12,6 +12,7 @@ import androidx.compose.runtime.Composable
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 com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
/** /**
* Dialog for displaying information about Aurora Store * Dialog for displaying information about Aurora Store
@@ -36,5 +37,7 @@ fun AboutDialog(onDismiss: () -> Unit = {}) {
@Preview @Preview
@Composable @Composable
private fun AboutDialogPreview() { private fun AboutDialogPreview() {
AboutDialog() PreviewTemplate {
AboutDialog()
}
} }

View File

@@ -41,6 +41,7 @@ import com.aurora.store.BuildConfig.VERSION_NAME
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composable.LinkListItem import com.aurora.store.compose.composable.LinkListItem
import com.aurora.store.compose.composable.TopAppBar import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.data.model.Link import com.aurora.store.data.model.Link
@Composable @Composable
@@ -166,5 +167,7 @@ private fun BrandHeader() {
@Preview @Preview
@Composable @Composable
private fun AboutScreenPreview() { private fun AboutScreenPreview() {
ScreenContent() PreviewTemplate {
ScreenContent()
}
} }

View File

@@ -47,6 +47,7 @@ import com.aurora.Constants.URL_TOS
import com.aurora.extensions.browse import com.aurora.extensions.browse
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composable.TopAppBar import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.data.providers.AccountProvider import com.aurora.store.data.providers.AccountProvider
import com.aurora.store.viewmodel.accounts.AccountsViewModel import com.aurora.store.viewmodel.accounts.AccountsViewModel
@@ -206,5 +207,7 @@ private fun AssistHeader() {
@Preview @Preview
@Composable @Composable
private fun AccountsScreenPreview() { private fun AccountsScreenPreview() {
ScreenContent() PreviewTemplate {
ScreenContent()
}
} }

View File

@@ -12,6 +12,7 @@ import androidx.compose.runtime.Composable
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 com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
/** /**
* Dialog for confirming log out * Dialog for confirming log out
@@ -42,5 +43,7 @@ fun LogoutDialog(onConfirm: () -> Unit = {}, onDismiss: () -> Unit = {}) {
@Preview @Preview
@Composable @Composable
private fun LogoutDialogPreview() { private fun LogoutDialogPreview() {
LogoutDialog() PreviewTemplate {
LogoutDialog()
}
} }

View File

@@ -46,6 +46,7 @@ import com.aurora.Constants
import com.aurora.extensions.toast import com.aurora.extensions.toast
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composable.BlackListItem import com.aurora.store.compose.composable.BlackListItem
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.ui.blacklist.menu.BlacklistMenu import com.aurora.store.compose.ui.blacklist.menu.BlacklistMenu
import com.aurora.store.compose.ui.blacklist.menu.MenuItem import com.aurora.store.compose.ui.blacklist.menu.MenuItem
import com.aurora.store.util.PackageUtil import com.aurora.store.util.PackageUtil
@@ -239,5 +240,7 @@ private fun ScreenContent(
@Preview @Preview
@Composable @Composable
private fun BlacklistScreenPreview() { private fun BlacklistScreenPreview() {
ScreenContent() PreviewTemplate {
ScreenContent()
}
} }

View File

@@ -21,6 +21,7 @@ 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 com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
/** /**
* Menu for the blacklist screen * Menu for the blacklist screen
@@ -71,5 +72,7 @@ fun BlacklistMenu(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun BlacklistMenuPreview() { private fun BlacklistMenuPreview() {
BlacklistMenu(isExpanded = true) PreviewTemplate {
BlacklistMenu(isExpanded = true)
}
} }

View File

@@ -44,6 +44,7 @@ import com.aurora.store.R
import com.aurora.store.compose.composable.PermissionListItem import com.aurora.store.compose.composable.PermissionListItem
import com.aurora.store.compose.composable.TextDividerComposable import com.aurora.store.compose.composable.TextDividerComposable
import com.aurora.store.compose.composable.TopAppBar import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.data.model.Permission import com.aurora.store.data.model.Permission
import com.aurora.store.data.model.PermissionType import com.aurora.store.data.model.PermissionType
import com.aurora.store.data.providers.PermissionProvider.Companion.isGranted import com.aurora.store.data.providers.PermissionProvider.Companion.isGranted
@@ -213,5 +214,7 @@ private fun PermissionsScreenPreview() {
isGranted = Random.nextBoolean() isGranted = Random.nextBoolean()
) )
} }
ScreenContent(permissions = permissions) PreviewTemplate {
ScreenContent(permissions = permissions)
}
} }

View File

@@ -28,7 +28,6 @@ import androidx.compose.material3.adaptive.layout.calculatePaneScaffoldDirective
import androidx.compose.material3.adaptive.navigation.NavigableSupportingPaneScaffold import androidx.compose.material3.adaptive.navigation.NavigableSupportingPaneScaffold
import androidx.compose.material3.adaptive.navigation.rememberSupportingPaneScaffoldNavigator import androidx.compose.material3.adaptive.navigation.rememberSupportingPaneScaffoldNavigator
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
@@ -44,7 +43,6 @@ import androidx.compose.ui.tooling.preview.PreviewScreenSizes
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation3.runtime.NavKey import androidx.navigation3.runtime.NavKey
import coil3.compose.LocalAsyncImagePreviewHandler
import com.aurora.Constants.SHARE_URL import com.aurora.Constants.SHARE_URL
import com.aurora.extensions.appInfo import com.aurora.extensions.appInfo
import com.aurora.extensions.browse import com.aurora.extensions.browse
@@ -53,7 +51,6 @@ import com.aurora.extensions.requiresObbDir
import com.aurora.extensions.share import com.aurora.extensions.share
import com.aurora.extensions.toast import com.aurora.extensions.toast
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.Review import com.aurora.gplayapi.data.models.Review
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composable.Error import com.aurora.store.compose.composable.Error
@@ -63,7 +60,7 @@ import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.composable.app.LargeAppListItem import com.aurora.store.compose.composable.app.LargeAppListItem
import com.aurora.store.compose.navigation.Screen import com.aurora.store.compose.navigation.Screen
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.coilPreviewProvider import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.ui.commons.PermissionRationaleScreen import com.aurora.store.compose.ui.commons.PermissionRationaleScreen
import com.aurora.store.compose.ui.details.components.Actions import com.aurora.store.compose.ui.details.components.Actions
import com.aurora.store.compose.ui.details.components.Changelog import com.aurora.store.compose.ui.details.components.Changelog
@@ -522,7 +519,7 @@ private fun ScreenContentApp(
@PreviewScreenSizes @PreviewScreenSizes
@Composable @Composable
private fun AppDetailsScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun AppDetailsScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) { PreviewTemplate {
ScreenContentApp( ScreenContentApp(
app = app, app = app,
isAnonymous = false, isAnonymous = false,
@@ -534,11 +531,15 @@ private fun AppDetailsScreenPreview(@PreviewParameter(AppPreviewProvider::class)
@Preview @Preview
@Composable @Composable
private fun AppDetailsScreenPreviewLoading() { private fun AppDetailsScreenPreviewLoading() {
ScreenContentLoading() PreviewTemplate {
ScreenContentLoading()
}
} }
@Preview @Preview
@Composable @Composable
private fun AppDetailsScreenPreviewError() { private fun AppDetailsScreenPreviewError() {
ScreenContentError() PreviewTemplate {
ScreenContentError()
}
} }

View File

@@ -32,6 +32,7 @@ import com.aurora.store.compose.composable.Header
import com.aurora.store.compose.composable.TopAppBar import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.composable.details.ExodusListItem import com.aurora.store.compose.composable.details.ExodusListItem
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.data.model.ExodusTracker import com.aurora.store.data.model.ExodusTracker
import com.aurora.store.viewmodel.details.AppDetailsViewModel import com.aurora.store.viewmodel.details.AppDetailsViewModel
import com.aurora.store.viewmodel.details.ExodusViewModel import com.aurora.store.viewmodel.details.ExodusViewModel
@@ -111,8 +112,10 @@ private fun ScreenContent(
@Preview @Preview
@Composable @Composable
private fun ExodusScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun ExodusScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
ScreenContent( PreviewTemplate {
topAppBarTitle = app.displayName, ScreenContent(
version = app.versionName topAppBarTitle = app.displayName,
) version = app.versionName
)
}
} }

View File

@@ -58,6 +58,7 @@ import com.aurora.store.R
import com.aurora.store.compose.composable.Info import com.aurora.store.compose.composable.Info
import com.aurora.store.compose.composable.TopAppBar import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.data.model.AppState import com.aurora.store.data.model.AppState
import com.aurora.store.viewmodel.details.AppDetailsViewModel import com.aurora.store.viewmodel.details.AppDetailsViewModel
import kotlinx.coroutines.android.awaitFrame import kotlinx.coroutines.android.awaitFrame
@@ -214,8 +215,10 @@ private fun ScreenContent(
@Preview @Preview
@Composable @Composable
private fun ManualDownloadScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun ManualDownloadScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
ScreenContent( PreviewTemplate {
topAppBarTitle = app.displayName, ScreenContent(
currentVersionCode = app.versionCode topAppBarTitle = app.displayName,
) currentVersionCode = app.versionCode
)
}
} }

View File

@@ -20,7 +20,6 @@ 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.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.res.dimensionResource import androidx.compose.ui.res.dimensionResource
@@ -31,7 +30,6 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.compose.collectAsStateWithLifecycle
import coil3.compose.LocalAsyncImagePreviewHandler
import com.aurora.extensions.adaptiveNavigationIcon import com.aurora.extensions.adaptiveNavigationIcon
import com.aurora.extensions.isWindowCompact import com.aurora.extensions.isWindowCompact
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
@@ -41,7 +39,7 @@ import com.aurora.store.compose.composable.Info
import com.aurora.store.compose.composable.TopAppBar import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.composable.app.AppListItem import com.aurora.store.compose.composable.app.AppListItem
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.coilPreviewProvider import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.viewmodel.details.AppDetailsViewModel import com.aurora.store.viewmodel.details.AppDetailsViewModel
import com.aurora.store.viewmodel.details.MoreViewModel import com.aurora.store.viewmodel.details.MoreViewModel
import java.util.Locale import java.util.Locale
@@ -193,7 +191,7 @@ private fun AppInfoMore(app: App) {
@Preview @Preview
@Composable @Composable
private fun MoreScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun MoreScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) { PreviewTemplate {
ScreenContent(app = app) ScreenContent(app = app)
} }
} }

View File

@@ -32,6 +32,7 @@ import com.aurora.store.R
import com.aurora.store.compose.composable.Info import com.aurora.store.compose.composable.Info
import com.aurora.store.compose.composable.TopAppBar import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.viewmodel.details.AppDetailsViewModel import com.aurora.store.viewmodel.details.AppDetailsViewModel
import com.aurora.store.viewmodel.details.PermissionViewModel import com.aurora.store.viewmodel.details.PermissionViewModel
import java.util.Locale import java.util.Locale
@@ -117,7 +118,9 @@ private fun ScreenContent(
@Preview @Preview
@Composable @Composable
private fun PermissionScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun PermissionScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
ScreenContent( PreviewTemplate {
topAppBarTitle = app.displayName ScreenContent(
) topAppBarTitle = app.displayName
)
}
} }

View File

@@ -20,7 +20,6 @@ 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
@@ -38,7 +37,6 @@ import androidx.paging.PagingData
import androidx.paging.compose.LazyPagingItems 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 coil3.compose.LocalAsyncImagePreviewHandler
import com.aurora.extensions.adaptiveNavigationIcon import com.aurora.extensions.adaptiveNavigationIcon
import com.aurora.extensions.isWindowCompact import com.aurora.extensions.isWindowCompact
import com.aurora.gplayapi.data.models.Review import com.aurora.gplayapi.data.models.Review
@@ -48,8 +46,8 @@ import com.aurora.store.compose.composable.ContainedLoadingIndicator
import com.aurora.store.compose.composable.TopAppBar import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.composable.details.ReviewListItem import com.aurora.store.compose.composable.details.ReviewListItem
import com.aurora.store.compose.preview.ReviewPreviewProvider import com.aurora.store.compose.preview.ReviewPreviewProvider
import com.aurora.store.compose.preview.coilPreviewProvider
import com.aurora.extensions.emptyPagingItems import com.aurora.extensions.emptyPagingItems
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.viewmodel.details.AppDetailsViewModel import com.aurora.store.viewmodel.details.AppDetailsViewModel
import com.aurora.store.viewmodel.details.ReviewViewModel import com.aurora.store.viewmodel.details.ReviewViewModel
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
@@ -186,10 +184,10 @@ private fun FilterHeader(onClick: (filter: Review.Filter) -> Unit) {
@Preview @Preview
@Composable @Composable
private fun ReviewScreenPreview(@PreviewParameter(ReviewPreviewProvider::class) review: Review) { private fun ReviewScreenPreview(@PreviewParameter(ReviewPreviewProvider::class) review: Review) {
val reviews = List(10) { review.copy(commentId = Random.nextInt().toString()) } PreviewTemplate {
val reviewsFlow = MutableStateFlow(PagingData.from(reviews)).collectAsLazyPagingItems() val reviews = List(10) { review.copy(commentId = Random.nextInt().toString()) }
val reviewsFlow = MutableStateFlow(PagingData.from(reviews)).collectAsLazyPagingItems()
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) {
ScreenContent(reviews = reviewsFlow) ScreenContent(reviews = reviewsFlow)
} }
} }

View File

@@ -27,6 +27,7 @@ import com.aurora.gplayapi.data.models.Artwork
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composable.TopAppBar import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.composable.details.ScreenshotListItem import com.aurora.store.compose.composable.details.ScreenshotListItem
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.viewmodel.details.AppDetailsViewModel import com.aurora.store.viewmodel.details.AppDetailsViewModel
@Composable @Composable
@@ -94,7 +95,9 @@ private fun ScreenContent(
@Preview @Preview
@Composable @Composable
private fun ScreenshotScreenPreview() { private fun ScreenshotScreenPreview() {
ScreenContent( PreviewTemplate {
topAppBarTitle = stringResource(R.string.app_name) ScreenContent(
) topAppBarTitle = stringResource(R.string.app_name)
)
}
} }

View File

@@ -23,6 +23,7 @@ import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import com.aurora.extensions.isWindowCompact import com.aurora.extensions.isWindowCompact
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
/** /**
* Composable to display primary and secondary actions available for the app, supposed to be used * Composable to display primary and secondary actions available for the app, supposed to be used
@@ -83,10 +84,12 @@ fun Actions(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun ActionsPreview() { private fun ActionsPreview() {
Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) { PreviewTemplate {
Actions( Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) {
primaryActionDisplayName = stringResource(R.string.action_install), Actions(
secondaryActionDisplayName = stringResource(R.string.title_manual_download) primaryActionDisplayName = stringResource(R.string.action_install),
) secondaryActionDisplayName = stringResource(R.string.title_manual_download)
)
}
} }
} }

View File

@@ -27,6 +27,7 @@ import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composable.Header import com.aurora.store.compose.composable.Header
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
/** /**
* Composable to display app changelog, supposed to be used as a part * Composable to display app changelog, supposed to be used as a part
@@ -57,7 +58,9 @@ fun Changelog(changelog: String) {
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun ChangelogPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun ChangelogPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) { PreviewTemplate {
Changelog(changelog = app.changes) Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) {
Changelog(changelog = app.changes)
}
} }
} }

View File

@@ -16,6 +16,7 @@ import androidx.compose.ui.tooling.preview.Preview
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composable.Header import com.aurora.store.compose.composable.Header
import com.aurora.store.compose.composable.Info import com.aurora.store.compose.composable.Info
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.theme.successColor import com.aurora.store.compose.theme.successColor
import com.aurora.store.compose.theme.warningColor import com.aurora.store.compose.theme.warningColor
import com.aurora.store.data.model.Scores import com.aurora.store.data.model.Scores
@@ -78,7 +79,9 @@ fun Compatibility(needsGms: Boolean, plexusScores: Scores? = null) {
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun CompatibilityPreview() { private fun CompatibilityPreview() {
Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) { PreviewTemplate {
Compatibility(needsGms = true) Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) {
Compatibility(needsGms = true)
}
} }
} }

View File

@@ -24,6 +24,7 @@ import com.aurora.store.R
import com.aurora.store.compose.composable.Header import com.aurora.store.compose.composable.Header
import com.aurora.store.compose.composable.Info import com.aurora.store.compose.composable.Info
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
/** /**
* Composable to display app's data safety report, supposed to be used as a part * Composable to display app's data safety report, supposed to be used as a part
@@ -82,16 +83,26 @@ fun DataSafety(report: Report, privacyPolicyUrl: String) {
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun DataSafetyPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun DataSafetyPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) { PreviewTemplate {
DataSafety( Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) {
privacyPolicyUrl = app.privacyPolicyUrl, DataSafety(
report = Report( privacyPolicyUrl = app.privacyPolicyUrl,
packageName = app.packageName, report = Report(
entries = listOf( packageName = app.packageName,
Entry(type = EntryType.DATA_COLLECTED, name = String(), description = String()), entries = listOf(
Entry(type = EntryType.DATA_SHARED, name = String(), description = String()) Entry(
type = EntryType.DATA_COLLECTED,
name = String(),
description = String()
),
Entry(
type = EntryType.DATA_SHARED,
name = String(),
description = String()
)
)
) )
) )
) }
} }
} }

View File

@@ -17,7 +17,6 @@ import androidx.compose.foundation.layout.requiredSize
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.dimensionResource import androidx.compose.ui.res.dimensionResource
@@ -25,12 +24,11 @@ import androidx.compose.ui.res.stringResource
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.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import coil3.compose.LocalAsyncImagePreviewHandler
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composable.app.AnimatedAppIcon import com.aurora.store.compose.composable.app.AnimatedAppIcon
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.coilPreviewProvider import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.data.model.AppState import com.aurora.store.data.model.AppState
import com.aurora.store.util.CommonUtil import com.aurora.store.util.CommonUtil
import com.aurora.store.util.PackageUtil import com.aurora.store.util.PackageUtil
@@ -113,8 +111,8 @@ fun Details(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun DetailsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun DetailsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) { PreviewTemplate {
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) { Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) {
Details(app = app) Details(app = app)
} }
} }

View File

@@ -24,6 +24,7 @@ import com.aurora.store.R
import com.aurora.store.compose.composable.Header import com.aurora.store.compose.composable.Header
import com.aurora.store.compose.composable.Info import com.aurora.store.compose.composable.Info
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
/** /**
* Composable to display details of the app developer, supposed to be used as a part * Composable to display details of the app developer, supposed to be used as a part
@@ -70,11 +71,13 @@ fun DeveloperDetails(address: String, website: String, email: String) {
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun DeveloperDetailsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun DeveloperDetailsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) { PreviewTemplate {
DeveloperDetails( Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) {
address = app.developerAddress, DeveloperDetails(
website = app.developerWebsite, address = app.developerAddress,
email = app.developerEmail website = app.developerWebsite,
) email = app.developerEmail
)
}
} }
} }

View File

@@ -16,6 +16,7 @@ import androidx.compose.ui.tooling.preview.Preview
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composable.Header import com.aurora.store.compose.composable.Header
import com.aurora.store.compose.composable.Info import com.aurora.store.compose.composable.Info
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.theme.successColor import com.aurora.store.compose.theme.successColor
import com.aurora.store.compose.theme.warningColor import com.aurora.store.compose.theme.warningColor
import com.aurora.store.data.model.Report import com.aurora.store.data.model.Report
@@ -58,7 +59,9 @@ fun Privacy(report: Report?, onNavigateToDetailsExodus: (() -> Unit)? = null) {
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun PrivacyPreview() { private fun PrivacyPreview() {
Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) { PreviewTemplate {
Privacy(report = Report(), onNavigateToDetailsExodus = {}) Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) {
Privacy(report = Report(), onNavigateToDetailsExodus = {})
}
} }
} }

View File

@@ -40,6 +40,7 @@ import com.aurora.store.compose.composable.PageIndicator
import com.aurora.store.compose.composable.details.RatingListItem import com.aurora.store.compose.composable.details.RatingListItem
import com.aurora.store.compose.composable.details.ReviewListItem import com.aurora.store.compose.composable.details.ReviewListItem
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import java.util.Locale import java.util.Locale
/** /**
@@ -144,7 +145,9 @@ fun RatingAndReviews(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun RatingAndReviewsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun RatingAndReviewsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) { PreviewTemplate {
RatingAndReviews(rating = app.rating) Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) {
RatingAndReviews(rating = app.rating)
}
} }
} }

View File

@@ -13,19 +13,17 @@ import androidx.compose.foundation.lazy.LazyRow
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.res.dimensionResource import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import coil3.compose.LocalAsyncImagePreviewHandler
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.store.R import com.aurora.store.R
import com.aurora.store.compose.composable.details.ScreenshotListItem import com.aurora.store.compose.composable.details.ScreenshotListItem
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.coilPreviewProvider import com.aurora.store.compose.preview.PreviewTemplate
/** /**
* Composable to display screenshots of the app, supposed to be used as a part * Composable to display screenshots of the app, supposed to be used as a part
@@ -51,8 +49,8 @@ fun Screenshots(screenshots: List<Artwork>, onNavigateToScreenshot: (index: Int)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun ScreenshotsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun ScreenshotsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) { PreviewTemplate {
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) { Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) {
Screenshots(screenshots = app.screenshots) Screenshots(screenshots = app.screenshots)
} }
} }

View File

@@ -21,6 +21,7 @@ import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composable.app.TagListItem import com.aurora.store.compose.composable.app.TagListItem
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.util.CommonUtil import com.aurora.store.util.CommonUtil
/** /**
@@ -70,7 +71,9 @@ fun Tags(app: App) {
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun TagsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun TagsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) { PreviewTemplate {
Tags(app = app) Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) {
Tags(app = app)
}
} }
} }

View File

@@ -26,6 +26,7 @@ import com.aurora.store.R
import com.aurora.store.compose.composable.Header import com.aurora.store.compose.composable.Header
import com.aurora.store.compose.composable.Info import com.aurora.store.compose.composable.Info
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
/** /**
* Composable to display app's beta testing status, supposed to be used as a part of the * Composable to display app's beta testing status, supposed to be used as a part of the
@@ -71,7 +72,9 @@ fun Testing(isSubscribed: Boolean, onTestingSubscriptionChange: (subscribe: Bool
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun TestingPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun TestingPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) { PreviewTemplate {
Testing(isSubscribed = app.testingProgram!!.isSubscribed) Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) {
Testing(isSubscribed = app.testingProgram!!.isSubscribed)
}
} }
} }

View File

@@ -25,6 +25,7 @@ import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composable.TopAppBar import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.data.model.AppState import com.aurora.store.data.model.AppState
/** /**
@@ -103,13 +104,15 @@ fun AppDetailsMenu(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun AppDetailsMenuPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun AppDetailsMenuPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
TopAppBar( PreviewTemplate {
actions = { TopAppBar(
AppDetailsMenu( actions = {
isInstalled = app.isInstalled, AppDetailsMenu(
isFavorite = true, isInstalled = app.isInstalled,
isExpanded = true isFavorite = true,
) isExpanded = true
} )
) }
)
}
} }

View File

@@ -12,7 +12,6 @@ import androidx.compose.material3.Scaffold
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.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.res.dimensionResource import androidx.compose.ui.res.dimensionResource
@@ -26,7 +25,6 @@ import androidx.paging.PagingData
import androidx.paging.compose.LazyPagingItems 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 coil3.compose.LocalAsyncImagePreviewHandler
import com.aurora.extensions.adaptiveNavigationIcon import com.aurora.extensions.adaptiveNavigationIcon
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
@@ -35,7 +33,7 @@ import com.aurora.store.compose.composable.ContainedLoadingIndicator
import com.aurora.store.compose.composable.TopAppBar import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.composable.app.LargeAppListItem import com.aurora.store.compose.composable.app.LargeAppListItem
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.coilPreviewProvider import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.viewmodel.details.DevProfileViewModel import com.aurora.store.viewmodel.details.DevProfileViewModel
import com.aurora.store.viewmodel.search.SearchViewModel import com.aurora.store.viewmodel.search.SearchViewModel
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
@@ -130,7 +128,7 @@ private fun ScreenContent(
@Preview @Preview
@Composable @Composable
private fun DevProfileScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun DevProfileScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) { PreviewTemplate {
val apps = List(10) { app.copy(id = Random.nextInt()) } val apps = List(10) { app.copy(id = Random.nextInt()) }
val pagedApps = MutableStateFlow(PagingData.from(apps)).collectAsLazyPagingItems() val pagedApps = MutableStateFlow(PagingData.from(apps)).collectAsLazyPagingItems()

View File

@@ -13,7 +13,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material3.Scaffold import androidx.compose.material3.Scaffold
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
@@ -31,7 +30,6 @@ import androidx.paging.PagingData
import androidx.paging.compose.LazyPagingItems 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 coil3.compose.LocalAsyncImagePreviewHandler
import com.aurora.extensions.toast import com.aurora.extensions.toast
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composable.DownloadListItem import com.aurora.store.compose.composable.DownloadListItem
@@ -41,7 +39,7 @@ import com.aurora.store.compose.composable.TopAppBar
import com.aurora.extensions.emptyPagingItems import com.aurora.extensions.emptyPagingItems
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.coilPreviewProvider import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.ui.downloads.menu.DownloadsMenu import com.aurora.store.compose.ui.downloads.menu.DownloadsMenu
import com.aurora.store.compose.ui.downloads.menu.MenuItem import com.aurora.store.compose.ui.downloads.menu.MenuItem
import com.aurora.store.data.model.DownloadStatus import com.aurora.store.data.model.DownloadStatus
@@ -182,7 +180,7 @@ private fun ScreenContent(
@Preview @Preview
@Composable @Composable
private fun DownloadsScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun DownloadsScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) { PreviewTemplate {
val downloads = List(10) { val downloads = List(10) {
Download.fromApp(app).copy( Download.fromApp(app).copy(
packageName = Random.nextInt().toString(), packageName = Random.nextInt().toString(),

View File

@@ -21,6 +21,7 @@ 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 com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
/** /**
* Menu for the blacklist screen * Menu for the blacklist screen
@@ -67,5 +68,7 @@ fun DownloadsMenu(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun DownloadsMenuPreview() { private fun DownloadsMenuPreview() {
DownloadsMenu(isExpanded = true) PreviewTemplate {
DownloadsMenu(isExpanded = true)
}
} }

View File

@@ -13,7 +13,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material3.Scaffold import androidx.compose.material3.Scaffold
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
@@ -31,7 +30,6 @@ import androidx.paging.PagingData
import androidx.paging.compose.LazyPagingItems 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 coil3.compose.LocalAsyncImagePreviewHandler
import com.aurora.Constants.JSON_MIME_TYPE import com.aurora.Constants.JSON_MIME_TYPE
import com.aurora.extensions.toast import com.aurora.extensions.toast
import com.aurora.store.R import com.aurora.store.R
@@ -41,7 +39,7 @@ import com.aurora.store.compose.composable.ContainedLoadingIndicator
import com.aurora.store.compose.composable.TopAppBar import com.aurora.store.compose.composable.TopAppBar
import com.aurora.extensions.emptyPagingItems import com.aurora.extensions.emptyPagingItems
import com.aurora.store.compose.preview.FavouritePreviewProvider import com.aurora.store.compose.preview.FavouritePreviewProvider
import com.aurora.store.compose.preview.coilPreviewProvider import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.ui.favourite.menu.FavouriteMenu import com.aurora.store.compose.ui.favourite.menu.FavouriteMenu
import com.aurora.store.compose.ui.favourite.menu.MenuItem import com.aurora.store.compose.ui.favourite.menu.MenuItem
import com.aurora.store.data.room.favourite.Favourite import com.aurora.store.data.room.favourite.Favourite
@@ -183,7 +181,7 @@ private fun ScreenContent(
private fun FavouriteScreenPreview( private fun FavouriteScreenPreview(
@PreviewParameter(FavouritePreviewProvider ::class) favourite: Favourite @PreviewParameter(FavouritePreviewProvider ::class) favourite: Favourite
) { ) {
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) { PreviewTemplate {
val favourites = List(10) { val favourites = List(10) {
favourite.copy(packageName = "${favourite.packageName}.${Random.nextInt()}") favourite.copy(packageName = "${favourite.packageName}.${Random.nextInt()}")
} }

View File

@@ -21,6 +21,7 @@ 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 com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
/** /**
* Menu for the favourite screen * Menu for the favourite screen
@@ -63,5 +64,7 @@ fun FavouriteMenu(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun FavouriteMenuPreview() { private fun FavouriteMenuPreview() {
FavouriteMenu(isExpanded = true) PreviewTemplate {
FavouriteMenu(isExpanded = true)
}
} }

View File

@@ -72,6 +72,7 @@ import com.aurora.store.compose.composable.app.LargeAppListItem
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.coilPreviewProvider import com.aurora.store.compose.preview.coilPreviewProvider
import com.aurora.extensions.emptyPagingItems import com.aurora.extensions.emptyPagingItems
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.ui.details.AppDetailsScreen import com.aurora.store.compose.ui.details.AppDetailsScreen
import com.aurora.store.data.model.SearchFilter import com.aurora.store.data.model.SearchFilter
import com.aurora.store.viewmodel.search.SearchViewModel import com.aurora.store.viewmodel.search.SearchViewModel
@@ -416,10 +417,12 @@ private fun FilterHeader(
@PreviewScreenSizes @PreviewScreenSizes
@Composable @Composable
private fun SearchScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun SearchScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
val apps = List(10) { app.copy(id = Random.nextInt()) } PreviewTemplate {
val results = MutableStateFlow(PagingData.from(apps)).collectAsLazyPagingItems() val apps = List(10) { app.copy(id = Random.nextInt()) }
val results = MutableStateFlow(PagingData.from(apps)).collectAsLazyPagingItems()
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) { CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) {
ScreenContent(results = results) ScreenContent(results = results)
}
} }
} }