Replace preview template logic with new provider annotation

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2026-04-26 10:49:07 +08:00
parent 4ab2626ec1
commit bf5a667232
71 changed files with 511 additions and 513 deletions

View File

@@ -22,16 +22,16 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.asImageBitmap
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.core.graphics.drawable.toBitmap
import androidx.core.graphics.drawable.toDrawable
import com.aurora.store.BuildConfig
import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* Composable for displaying package details in a list for blacklisting
@@ -101,18 +101,17 @@ fun BlackListItem(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun BlackListItemPreview() {
PreviewTemplate {
BlackListItem(
icon = Color.GRAY.toDrawable().toBitmap(56, 56),
displayName = LocalContext.current.getString(R.string.app_name),
packageName = BuildConfig.APPLICATION_ID,
versionName = BuildConfig.VERSION_NAME,
versionCode = BuildConfig.VERSION_CODE.toLong(),
isChecked = true,
isEnabled = false
)
}
BlackListItem(
icon = Color.GRAY.toDrawable().toBitmap(56, 56),
displayName = stringResource(R.string.app_name),
packageName = BuildConfig.APPLICATION_ID,
versionName = BuildConfig.VERSION_NAME,
versionCode = BuildConfig.VERSION_CODE.toLong(),
isChecked = true,
isEnabled = false
)
}

View File

@@ -18,8 +18,9 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.stateDescription
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* Composable to display an indeterminate loading indicator that fills all available screen
@@ -42,10 +43,9 @@ fun ContainedLoadingIndicator(modifier: Modifier = Modifier) {
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun ContainedLoadingIndicatorPreview() {
PreviewTemplate {
ContainedLoadingIndicator()
}
ContainedLoadingIndicator()
}

View File

@@ -39,11 +39,12 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.gplayapi.data.models.App
import com.aurora.store.R
import com.aurora.store.compose.composable.app.AnimatedAppIcon
import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.data.model.DownloadStatus
import com.aurora.store.data.room.download.Download
import com.aurora.store.util.CommonUtil.getETAString
@@ -171,10 +172,9 @@ fun DownloadListItem(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun DownloadListItemPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate {
DownloadListItem(download = Download.fromApp(app), isExpanded = true)
}
DownloadListItem(download = Download.fromApp(app), isExpanded = true)
}

View File

@@ -24,8 +24,9 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* Composable to show error message that fills all available screen
@@ -76,14 +77,13 @@ fun Error(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun ErrorPreview() {
PreviewTemplate {
Error(
painter = painterResource(R.drawable.ic_updates),
message = stringResource(R.string.details_no_updates),
actionMessage = stringResource(R.string.check_updates)
)
}
Error(
painter = painterResource(R.drawable.ic_updates),
message = stringResource(R.string.details_no_updates),
actionMessage = stringResource(R.string.check_updates)
)
}

View File

@@ -38,13 +38,14 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewWrapper
import coil3.compose.AsyncImage
import coil3.request.ImageRequest
import coil3.request.crossfade
import com.aurora.gplayapi.data.models.App
import com.aurora.store.R
import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.data.room.favourite.Favourite
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
@@ -138,10 +139,9 @@ fun FavouriteListItem(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun FavouriteListItemPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate {
FavouriteListItem(favourite = Favourite.fromApp(app, Favourite.Mode.MANUAL))
}
FavouriteListItem(favourite = Favourite.fromApp(app, Favourite.Mode.MANUAL))
}

View File

@@ -24,8 +24,9 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* Composable to display sticky header in list
@@ -80,14 +81,13 @@ fun Header(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun HeaderPreview() {
PreviewTemplate {
Header(
title = stringResource(R.string.details_privacy),
subtitle = stringResource(R.string.exodus_powered),
onClick = {}
)
}
Header(
title = stringResource(R.string.details_privacy),
subtitle = stringResource(R.string.exodus_powered),
onClick = {}
)
}

View File

@@ -27,10 +27,11 @@ import androidx.compose.ui.text.fromHtml
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.gplayapi.data.models.App
import com.aurora.store.R
import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* Composable to show some information
@@ -81,14 +82,13 @@ fun Info(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun InfoPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate {
Info(
title = AnnotatedString(text = stringResource(R.string.details_dev_website)),
description = AnnotatedString.fromHtml(htmlString = app.developerWebsite),
painter = painterResource(R.drawable.ic_network)
)
}
Info(
title = AnnotatedString(text = stringResource(R.string.details_dev_website)),
description = AnnotatedString.fromHtml(htmlString = app.developerWebsite),
painter = painterResource(R.drawable.ic_network)
)
}

View File

@@ -21,8 +21,9 @@ import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.data.installer.SessionInstaller
import com.aurora.store.data.model.InstallerInfo
@@ -70,10 +71,9 @@ fun InstallerListItem(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun InstallerListItemPreview() {
PreviewTemplate {
InstallerListItem(installerInfo = SessionInstaller.installerInfo, isSelected = true)
}
InstallerListItem(installerInfo = SessionInstaller.installerInfo, isSelected = true)
}

View File

@@ -30,10 +30,11 @@ import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import coil3.compose.AsyncImage
import coil3.request.ImageRequest
import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.data.model.Link
/**
@@ -91,18 +92,17 @@ fun LinkListItem(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun LinkListItemPreview() {
PreviewTemplate {
LinkListItem(
link = Link(
id = 0,
title = stringResource(R.string.title_about),
subtitle = stringResource(R.string.about_aurora_store_subtitle),
url = "https://auroraoss.com/",
icon = R.drawable.ic_menu_about
)
LinkListItem(
link = Link(
id = 0,
title = stringResource(R.string.title_about),
subtitle = stringResource(R.string.about_aurora_store_subtitle),
url = "https://auroraoss.com/",
icon = R.drawable.ic_menu_about
)
}
)
}

View File

@@ -22,10 +22,11 @@ import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import coil3.compose.AsyncImage
import coil3.request.ImageRequest
import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* Composable to show Aurora Store's logo
@@ -59,10 +60,9 @@ fun Logo(modifier: Modifier = Modifier) {
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun LogoPreview() {
PreviewTemplate {
Logo()
}
Logo()
}

View File

@@ -28,10 +28,11 @@ import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.compose.ui.util.fastForEach
import com.aurora.extensions.browse
import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.data.model.Link
import com.aurora.store.viewmodel.onboarding.MicroGUIState
@@ -148,10 +149,9 @@ fun MicroG(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun MicroGPreview() {
PreviewTemplate {
MicroG(uiState = MicroGUIState())
}
MicroG(uiState = MicroGUIState())
}

View File

@@ -26,8 +26,9 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.semantics.stateDescription
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* Pager indicator
@@ -77,10 +78,9 @@ fun PageIndicator(modifier: Modifier = Modifier, totalPages: Int, currentPage: I
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun PageIndicatorPreview() {
PreviewTemplate {
PageIndicator(totalPages = 5)
}
PageIndicator(totalPages = 5)
}

View File

@@ -28,13 +28,14 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.compose.ui.tooling.preview.datasource.LoremIpsum
import androidx.core.net.toUri
import com.aurora.extensions.isTAndAbove
import com.aurora.extensions.toast
import com.aurora.store.BuildConfig
import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.data.model.Permission
import com.aurora.store.data.model.PermissionType
import com.aurora.store.data.providers.PermissionProvider.Companion.isGranted
@@ -159,6 +160,7 @@ fun PermissionList(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun PermissionListPreview() {
@@ -171,7 +173,5 @@ private fun PermissionListPreview() {
isGranted = Random.nextBoolean()
)
}
PreviewTemplate {
PermissionList(permissions = permissions)
}
PermissionList(permissions = permissions)
}

View File

@@ -20,8 +20,9 @@ import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.data.model.Permission
import com.aurora.store.data.model.PermissionType
@@ -70,17 +71,16 @@ fun PermissionListItem(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun PermissionListItemPreview() {
PreviewTemplate {
PermissionListItem(
permission = Permission(
PermissionType.STORAGE_MANAGER,
stringResource(R.string.onboarding_permission_esm),
stringResource(R.string.onboarding_permission_esa_desc),
false
)
PermissionListItem(
permission = Permission(
PermissionType.STORAGE_MANAGER,
stringResource(R.string.onboarding_permission_esm),
stringResource(R.string.onboarding_permission_esa_desc),
false
)
}
)
}

View File

@@ -24,12 +24,13 @@ import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import coil3.compose.AsyncImage
import coil3.request.ImageRequest
import coil3.request.crossfade
import com.aurora.gplayapi.SearchSuggestEntry
import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* Composable for displaying search suggestions in a list
@@ -96,12 +97,11 @@ fun SearchSuggestionListItem(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun SearchSuggestionListItemPreview() {
PreviewTemplate {
SearchSuggestionListItem(
searchSuggestEntry = SearchSuggestEntry.getDefaultInstance()
)
}
SearchSuggestionListItem(
searchSuggestEntry = SearchSuggestEntry.getDefaultInstance()
)
}

View File

@@ -15,8 +15,9 @@ import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* Composable to display a sticky header in a list
@@ -38,10 +39,9 @@ fun TextDividerComposable(modifier: Modifier = Modifier, title: String) {
)
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun TextDividerComposablePreview() {
PreviewTemplate {
TextDividerComposable(title = stringResource(R.string.item_optional))
}
TextDividerComposable(title = stringResource(R.string.item_optional))
}

View File

@@ -16,8 +16,9 @@ import androidx.compose.ui.graphics.painter.Painter
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.PreviewWrapper
import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* A top app bar composable to be used with Scaffold in different Screen
@@ -52,13 +53,12 @@ fun TopAppBar(
)
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun TopAppBarPreview() {
PreviewTemplate {
TopAppBar(
title = stringResource(R.string.title_about),
onNavigateUp = {}
)
}
TopAppBar(
title = stringResource(R.string.title_about),
onNavigateUp = {}
)
}

View File

@@ -27,13 +27,14 @@ import androidx.compose.ui.semantics.testTag
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import androidx.compose.ui.tooling.preview.PreviewWrapper
import coil3.compose.AsyncImage
import coil3.request.ImageRequest
import coil3.request.crossfade
import com.aurora.gplayapi.data.models.App
import com.aurora.store.R
import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* Composable to show icon for an app that can be animated to also show install progress
@@ -97,26 +98,24 @@ private class ProgressProvider : PreviewParameterProvider<Float> {
get() = sequenceOf(0F, 50F)
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun AnimatedAppIconPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate {
AnimatedAppIcon(
modifier = Modifier.requiredSize(dimensionResource(R.dimen.icon_size_large)),
iconUrl = app.iconArtwork.url
)
}
AnimatedAppIcon(
modifier = Modifier.requiredSize(dimensionResource(R.dimen.icon_size_large)),
iconUrl = app.iconArtwork.url
)
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun AnimatedAppIconPreview(@PreviewParameter(ProgressProvider::class) progress: Float) {
PreviewTemplate {
AnimatedAppIcon(
modifier = Modifier.requiredSize(dimensionResource(R.dimen.icon_size_large)),
iconUrl = "",
inProgress = true,
progress = progress
)
}
AnimatedAppIcon(
modifier = Modifier.requiredSize(dimensionResource(R.dimen.icon_size_large)),
iconUrl = "",
inProgress = true,
progress = progress
)
}

View File

@@ -23,13 +23,14 @@ import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewWrapper
import coil3.compose.AsyncImage
import coil3.request.ImageRequest
import coil3.request.crossfade
import com.aurora.gplayapi.data.models.App
import com.aurora.store.R
import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* Composable for displaying minimal app details in a horizontal-scrollable list
@@ -76,10 +77,9 @@ fun AppListItem(modifier: Modifier = Modifier, app: App, onClick: () -> Unit = {
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun AppListItemPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate {
AppListItem(app = app)
}
AppListItem(app = app)
}

View File

@@ -24,6 +24,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewWrapper
import coil3.compose.AsyncImage
import coil3.request.ImageRequest
import coil3.request.crossfade
@@ -31,7 +32,7 @@ import com.aurora.extensions.requiresGMS
import com.aurora.gplayapi.data.models.App
import com.aurora.store.R
import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.util.CommonUtil
/**
@@ -43,6 +44,28 @@ import com.aurora.store.util.CommonUtil
*/
@Composable
fun LargeAppListItem(modifier: Modifier = Modifier, app: App, onClick: () -> Unit = {}) {
@Composable
fun buildExtras(app: App): List<String> = mutableListOf<String>().apply {
add(if (app.size > 0) CommonUtil.addSiPrefix(app.size) else app.downloadString)
add("${app.labeledRating}")
if (app.isFree) {
add(stringResource(R.string.details_free))
} else {
add(stringResource(R.string.details_paid))
}
if (app.containsAds) {
add(stringResource(R.string.details_contains_ads))
} else {
add(stringResource(R.string.details_no_ads))
}
if (app.requiresGMS()) {
add(stringResource(R.string.details_gsf_dependent))
}
}
Row(
modifier = modifier
.fillMaxWidth()
@@ -81,32 +104,9 @@ fun LargeAppListItem(modifier: Modifier = Modifier, app: App, onClick: () -> Uni
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
fun LargeAppListItemPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate {
LargeAppListItem(app = app)
}
}
@Composable
private fun buildExtras(app: App): List<String> = mutableListOf<String>().apply {
add(if (app.size > 0) CommonUtil.addSiPrefix(app.size) else app.downloadString)
add("${app.labeledRating}")
if (app.isFree) {
add(stringResource(R.string.details_free))
} else {
add(stringResource(R.string.details_paid))
}
if (app.containsAds) {
add(stringResource(R.string.details_contains_ads))
} else {
add(stringResource(R.string.details_no_ads))
}
if (app.requiresGMS()) {
add(stringResource(R.string.details_gsf_dependent))
}
LargeAppListItem(app = app)
}

View File

@@ -15,8 +15,9 @@ import androidx.compose.ui.graphics.painter.Painter
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.PreviewWrapper
import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* Composable to show a tag related to an app
@@ -41,13 +42,12 @@ fun TagListItem(
)
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun TagListItemPreview() {
PreviewTemplate {
TagListItem(
label = stringResource(R.string.details_free),
painter = painterResource(R.drawable.ic_paid)
)
}
TagListItem(
label = stringResource(R.string.details_free),
painter = painterResource(R.drawable.ic_paid)
)
}

View File

@@ -17,9 +17,10 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.extensions.browse
import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.data.model.ExodusTracker
/**
@@ -60,17 +61,16 @@ fun ExodusListItem(modifier: Modifier = Modifier, tracker: ExodusTracker) {
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun ExodusListItemPreview() {
PreviewTemplate {
ExodusListItem(
tracker = ExodusTracker(
name = "Google Analytics",
signature = "com.google.android.apps.analytics.|com.google.analytics.",
date = "2017-09-24",
url = "http://www.google.com/analytics/"
)
ExodusListItem(
tracker = ExodusTracker(
name = "Google Analytics",
signature = "com.google.android.apps.analytics.|com.google.analytics.",
date = "2017-09-24",
url = "http://www.google.com/analytics/"
)
}
)
}

View File

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

View File

@@ -24,14 +24,15 @@ import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.compose.ui.viewinterop.AndroidView
import coil3.compose.AsyncImage
import coil3.request.ImageRequest
import coil3.request.crossfade
import com.aurora.gplayapi.data.models.Review
import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ReviewPreviewProvider
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* Composable for viewing a review about an app
@@ -93,10 +94,9 @@ fun ReviewListItem(modifier: Modifier = Modifier, review: Review) {
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun ReviewListItemPreview(@PreviewParameter(ReviewPreviewProvider::class) review: Review) {
PreviewTemplate {
ReviewListItem(review = review)
}
ReviewListItem(review = review)
}

View File

@@ -14,6 +14,7 @@ import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import coil3.compose.AsyncImagePainter
import coil3.compose.rememberAsyncImagePainter
@@ -23,7 +24,7 @@ import coil3.request.crossfade
import com.aurora.extensions.shimmer
import com.aurora.gplayapi.data.models.App
import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* Composable to display a screenshot of an app
@@ -58,10 +59,9 @@ fun ScreenshotListItem(modifier: Modifier = Modifier, url: String) {
)
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview
@Composable
private fun ScreenshotListItemPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate {
ScreenshotListItem(url = app.screenshots.firstOrNull()?.url ?: "")
}
ScreenshotListItem(url = app.screenshots.firstOrNull()?.url ?: "")
}

View File

@@ -1,24 +0,0 @@
/*
* 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(
value = LocalAsyncImagePreviewHandler provides coilPreviewProvider,
content = content
)
}
}

View File

@@ -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.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.tooling.preview.PreviewWrapperProvider
import coil3.compose.LocalAsyncImagePreviewHandler
import com.aurora.store.compose.theme.AuroraTheme
/**
* Preview provider for default theme and remote image handling
*/
class ThemePreviewProvider : PreviewWrapperProvider {
@Composable
override fun Wrap(content: @Composable (() -> Unit)) {
AuroraTheme {
CompositionLocalProvider(
value = LocalAsyncImagePreviewHandler provides coilPreviewProvider,
content = content
)
}
}
}

View File

@@ -11,8 +11,9 @@ import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* Dialog for displaying information about Aurora Store
@@ -34,10 +35,9 @@ fun AboutDialog(onDismiss: () -> Unit = {}) {
)
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview
@Composable
private fun AboutDialogPreview() {
PreviewTemplate {
AboutDialog()
}
AboutDialog()
}

View File

@@ -33,6 +33,7 @@ import androidx.compose.ui.res.stringArrayResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import coil3.compose.AsyncImage
import coil3.request.ImageRequest
import com.aurora.extensions.browse
@@ -41,7 +42,7 @@ import com.aurora.store.BuildConfig.VERSION_NAME
import com.aurora.store.R
import com.aurora.store.compose.composable.LinkListItem
import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.data.model.Link
@Composable
@@ -164,10 +165,9 @@ private fun BrandHeader() {
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview
@Composable
private fun AboutScreenPreview() {
PreviewTemplate {
ScreenContent()
}
ScreenContent()
}

View File

@@ -37,6 +37,7 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import coil3.compose.AsyncImage
import coil3.request.ImageRequest
@@ -47,7 +48,7 @@ import com.aurora.Constants.URL_TOS
import com.aurora.extensions.browse
import com.aurora.store.R
import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.data.providers.AccountProvider
import com.aurora.store.viewmodel.accounts.AccountsViewModel
@@ -204,10 +205,9 @@ private fun AssistHeader() {
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview
@Composable
private fun AccountsScreenPreview() {
PreviewTemplate {
ScreenContent()
}
ScreenContent()
}

View File

@@ -11,8 +11,9 @@ import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* Dialog for confirming log out
@@ -40,10 +41,9 @@ fun LogoutDialog(onConfirm: () -> Unit = {}, onDismiss: () -> Unit = {}) {
)
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview
@Composable
private fun LogoutDialogPreview() {
PreviewTemplate {
LogoutDialog()
}
LogoutDialog()
}

View File

@@ -39,6 +39,7 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.core.content.pm.PackageInfoCompat
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
@@ -46,7 +47,7 @@ import com.aurora.Constants
import com.aurora.extensions.toast
import com.aurora.store.R
import com.aurora.store.compose.composable.BlackListItem
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.compose.ui.blacklist.menu.BlacklistMenu
import com.aurora.store.compose.ui.blacklist.menu.MenuItem
import com.aurora.store.util.PackageUtil
@@ -241,10 +242,9 @@ private fun ScreenContent(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview
@Composable
private fun BlacklistScreenPreview() {
PreviewTemplate {
ScreenContent()
}
ScreenContent()
}

View File

@@ -20,8 +20,9 @@ import androidx.compose.ui.Modifier
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.PreviewWrapper
import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* Menu for the blacklist screen
@@ -69,10 +70,9 @@ fun BlacklistMenu(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun BlacklistMenuPreview() {
PreviewTemplate {
BlacklistMenu(isExpanded = true)
}
BlacklistMenu(isExpanded = true)
}

View File

@@ -14,6 +14,7 @@ import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.pluralStringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.compose.ui.tooling.preview.datasource.LoremIpsum
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
@@ -21,7 +22,7 @@ import com.aurora.extensions.adaptiveNavigationIcon
import com.aurora.store.R
import com.aurora.store.compose.composable.PermissionList
import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.data.model.Permission
import com.aurora.store.data.model.PermissionType
import com.aurora.store.viewmodel.commons.PermissionRationaleViewModel
@@ -75,6 +76,7 @@ private fun ScreenContent(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview
@Composable
private fun PermissionsScreenPreview() {
@@ -87,7 +89,5 @@ private fun PermissionsScreenPreview() {
isGranted = Random.nextBoolean()
)
}
PreviewTemplate {
ScreenContent(permissions = permissions)
}
ScreenContent(permissions = permissions)
}

View File

@@ -15,6 +15,7 @@ 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.compose.ui.tooling.preview.PreviewWrapper
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.paging.LoadState
import androidx.paging.PagingData
@@ -29,7 +30,7 @@ import com.aurora.store.compose.composable.Error
import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.composable.app.LargeAppListItem
import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.viewmodel.browse.StreamBrowseViewModel
import kotlin.random.Random
import kotlin.uuid.Uuid
@@ -110,14 +111,13 @@ private fun ScreenContent(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview
@Composable
private fun StreamBrowseScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate {
val apps = List(10) { app.copy(id = Random.nextInt()) }
val pagedApps = MutableStateFlow(PagingData.from(apps)).collectAsLazyPagingItems()
ScreenContent(
apps = pagedApps
)
}
val apps = List(10) { app.copy(id = Random.nextInt()) }
val pagedApps = MutableStateFlow(PagingData.from(apps)).collectAsLazyPagingItems()
ScreenContent(
apps = pagedApps
)
}

View File

@@ -40,6 +40,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewScreenSizes
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation3.runtime.NavKey
@@ -59,7 +60,7 @@ import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.composable.app.LargeAppListItem
import com.aurora.store.compose.navigation.Screen
import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.compose.ui.commons.PermissionRationaleScreen
import com.aurora.store.compose.ui.details.composable.Actions
import com.aurora.store.compose.ui.details.composable.Changelog
@@ -526,30 +527,27 @@ private fun ScreenContentApp(
)
}
@PreviewWrapper(ThemePreviewProvider::class)
@PreviewScreenSizes
@Composable
private fun AppDetailsScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate {
ScreenContentApp(
app = app,
isAnonymous = false,
suggestions = List(10) { app.copy(id = Random.nextInt()) }
)
}
ScreenContentApp(
app = app,
isAnonymous = false,
suggestions = List(10) { app.copy(id = Random.nextInt()) }
)
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview
@Composable
private fun AppDetailsScreenPreviewLoading() {
PreviewTemplate {
ScreenContentLoading()
}
ScreenContentLoading()
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview
@Composable
private fun AppDetailsScreenPreviewError() {
PreviewTemplate {
ScreenContentError()
}
ScreenContentError()
}

View File

@@ -26,6 +26,7 @@ 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.compose.ui.tooling.preview.PreviewWrapper
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.aurora.Constants.EXODUS_REPORT_URL
@@ -40,7 +41,7 @@ import com.aurora.store.compose.composable.Header
import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.composable.details.ExodusListItem
import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.data.model.ExodusTracker
import com.aurora.store.data.model.Report
import com.aurora.store.viewmodel.details.AppDetailsViewModel
@@ -178,18 +179,16 @@ private fun ScreenContentError(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview
@Composable
private fun ExodusScreenPreviewReport(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate {
ScreenContentReport(topAppBarTitle = app.displayName)
}
ScreenContentReport(topAppBarTitle = app.displayName)
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview
@Composable
private fun ExodusScreenPreviewError(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate {
ScreenContentError(topAppBarTitle = app.displayName)
}
ScreenContentError(topAppBarTitle = app.displayName)
}

View File

@@ -47,6 +47,7 @@ import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.compose.ui.unit.dp
import androidx.core.text.isDigitsOnly
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
@@ -58,7 +59,7 @@ import com.aurora.store.R
import com.aurora.store.compose.composable.Info
import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.data.model.AppState
import com.aurora.store.viewmodel.details.AppDetailsViewModel
import kotlinx.coroutines.android.awaitFrame
@@ -213,13 +214,12 @@ private fun ScreenContent(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview
@Composable
private fun ManualDownloadScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate {
ScreenContent(
topAppBarTitle = app.displayName,
currentVersionCode = app.versionCode
)
}
ScreenContent(
topAppBarTitle = app.displayName,
currentVersionCode = app.versionCode
)
}

View File

@@ -28,6 +28,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.aurora.extensions.adaptiveNavigationIcon
@@ -38,7 +39,7 @@ import com.aurora.store.R
import com.aurora.store.compose.composable.MicroG
import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.data.model.PermissionType
import com.aurora.store.data.providers.PermissionProvider
import com.aurora.store.viewmodel.details.AppDetailsViewModel
@@ -151,10 +152,9 @@ private fun ScreenContent(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview
@Composable
private fun MicroGScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate {
ScreenContent(topAppBarTitle = app.displayName)
}
ScreenContent(topAppBarTitle = app.displayName)
}

View File

@@ -22,12 +22,14 @@ import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalLocale
import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.fromHtml
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.aurora.extensions.adaptiveNavigationIcon
@@ -39,10 +41,9 @@ import com.aurora.store.compose.composable.Info
import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.composable.app.AppListItem
import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.viewmodel.details.AppDetailsViewModel
import com.aurora.store.viewmodel.details.MoreViewModel
import java.util.Locale
@Composable
fun MoreScreen(
@@ -174,10 +175,10 @@ private fun AppInfoMore(app: App) {
Info(
title = AnnotatedString(
text = title.replace("_", " ")
.lowercase(Locale.getDefault())
.lowercase(LocalLocale.current.platformLocale)
.replaceFirstChar {
if (it.isLowerCase()) {
it.titlecase(Locale.getDefault())
it.titlecase(LocalLocale.current.platformLocale)
} else {
it.toString()
}
@@ -188,10 +189,9 @@ private fun AppInfoMore(app: App) {
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview
@Composable
private fun MoreScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate {
ScreenContent(app = app)
}
ScreenContent(app = app)
}

View File

@@ -18,11 +18,13 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLocale
import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.aurora.extensions.adaptiveNavigationIcon
@@ -32,10 +34,9 @@ import com.aurora.store.R
import com.aurora.store.compose.composable.Info
import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.viewmodel.details.AppDetailsViewModel
import com.aurora.store.viewmodel.details.PermissionViewModel
import java.util.Locale
@Composable
fun PermissionScreen(
@@ -99,7 +100,7 @@ private fun ScreenContent(
.toString()
.replaceFirstChar {
if (it.isLowerCase()) {
it.titlecase(Locale.getDefault())
it.titlecase(LocalLocale.current.platformLocale)
} else {
it.toString()
}
@@ -115,12 +116,11 @@ private fun ScreenContent(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview
@Composable
private fun PermissionScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate {
ScreenContent(
topAppBarTitle = app.displayName
)
}
ScreenContent(
topAppBarTitle = app.displayName
)
}

View File

@@ -30,6 +30,7 @@ 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.compose.ui.tooling.preview.PreviewWrapper
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.paging.LoadState
@@ -46,8 +47,8 @@ import com.aurora.store.compose.composable.ContainedLoadingIndicator
import com.aurora.store.compose.composable.Error
import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.composable.details.ReviewListItem
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ReviewPreviewProvider
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.viewmodel.details.AppDetailsViewModel
import com.aurora.store.viewmodel.details.ReviewViewModel
import kotlin.random.Random
@@ -178,13 +179,12 @@ private fun FilterHeader(onClick: (filter: Review.Filter) -> Unit) {
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview
@Composable
private fun ReviewScreenPreview(@PreviewParameter(ReviewPreviewProvider::class) review: Review) {
PreviewTemplate {
val reviews = List(10) { review.copy(commentId = Random.nextInt().toString()) }
val reviewsFlow = MutableStateFlow(PagingData.from(reviews)).collectAsLazyPagingItems()
val reviews = List(10) { review.copy(commentId = Random.nextInt().toString()) }
val reviewsFlow = MutableStateFlow(PagingData.from(reviews)).collectAsLazyPagingItems()
ScreenContent(reviews = reviewsFlow)
}
ScreenContent(reviews = reviewsFlow)
}

View File

@@ -19,6 +19,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.aurora.extensions.adaptiveNavigationIcon
@@ -27,7 +28,7 @@ import com.aurora.gplayapi.data.models.Artwork
import com.aurora.store.R
import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.composable.details.ScreenshotListItem
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.viewmodel.details.AppDetailsViewModel
@Composable
@@ -92,12 +93,11 @@ private fun ScreenContent(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview
@Composable
private fun ScreenshotScreenPreview() {
PreviewTemplate {
ScreenContent(
topAppBarTitle = stringResource(R.string.app_name)
)
}
ScreenContent(
topAppBarTitle = stringResource(R.string.app_name)
)
}

View File

@@ -21,9 +21,10 @@ import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.extensions.isWindowCompact
import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* Composable to display primary and secondary actions available for the app, supposed to be used
@@ -81,17 +82,16 @@ fun Actions(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun ActionsPreview() {
PreviewTemplate {
Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
Actions(
primaryActionDisplayName = stringResource(R.string.action_install),
secondaryActionDisplayName = stringResource(R.string.title_manual_download)
)
}
Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
Actions(
primaryActionDisplayName = stringResource(R.string.action_install),
secondaryActionDisplayName = stringResource(R.string.title_manual_download)
)
}
}

View File

@@ -23,11 +23,12 @@ import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.fromHtml
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.gplayapi.data.models.App
import com.aurora.store.R
import com.aurora.store.compose.composable.Header
import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* Composable to display app changelog, supposed to be used as a part
@@ -55,14 +56,13 @@ fun Changelog(changelog: String) {
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun ChangelogPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate {
Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
Changelog(changelog = app.changes)
}
Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
Changelog(changelog = app.changes)
}
}

View File

@@ -13,10 +13,11 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.store.R
import com.aurora.store.compose.composable.Header
import com.aurora.store.compose.composable.Info
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.compose.theme.successColor
import com.aurora.store.compose.theme.warningColor
import com.aurora.store.data.model.Scores
@@ -76,14 +77,13 @@ fun Compatibility(needsGms: Boolean, plexusScores: Scores? = null) {
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun CompatibilityPreview() {
PreviewTemplate {
Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
Compatibility(needsGms = true)
}
Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
Compatibility(needsGms = true)
}
}

View File

@@ -15,6 +15,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.extensions.browse
import com.aurora.gplayapi.data.models.App
import com.aurora.gplayapi.data.models.datasafety.Entry
@@ -24,7 +25,7 @@ import com.aurora.store.R
import com.aurora.store.compose.composable.Header
import com.aurora.store.compose.composable.Info
import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* Composable to display app's data safety report, supposed to be used as a part
@@ -80,31 +81,30 @@ fun DataSafety(report: Report, privacyPolicyUrl: String) {
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun DataSafetyPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate {
Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
DataSafety(
privacyPolicyUrl = app.privacyPolicyUrl,
report = Report(
packageName = app.packageName,
entries = listOf(
Entry(
type = EntryType.DATA_COLLECTED,
name = String(),
description = String()
),
Entry(
type = EntryType.DATA_SHARED,
name = String(),
description = String()
)
Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
DataSafety(
privacyPolicyUrl = app.privacyPolicyUrl,
report = Report(
packageName = app.packageName,
entries = listOf(
Entry(
type = EntryType.DATA_COLLECTED,
name = String(),
description = String()
),
Entry(
type = EntryType.DATA_SHARED,
name = String(),
description = String()
)
)
)
}
)
}
}

View File

@@ -32,12 +32,13 @@ import androidx.compose.ui.text.buildAnnotatedString
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.compose.ui.unit.LayoutDirection
import com.aurora.gplayapi.data.models.App
import com.aurora.store.R
import com.aurora.store.compose.composable.app.AnimatedAppIcon
import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.data.model.AppState
import com.aurora.store.util.CommonUtil
import com.aurora.store.util.PackageUtil
@@ -156,14 +157,13 @@ fun Details(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun DetailsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate {
Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
Details(app = app)
}
Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
Details(app = app)
}
}

View File

@@ -16,6 +16,7 @@ import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.fromHtml
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.extensions.browse
import com.aurora.extensions.copyToClipBoard
import com.aurora.extensions.mailTo
@@ -24,7 +25,7 @@ import com.aurora.store.R
import com.aurora.store.compose.composable.Header
import com.aurora.store.compose.composable.Info
import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* Composable to display details of the app developer, supposed to be used as a part
@@ -68,18 +69,17 @@ fun DeveloperDetails(address: String, website: String, email: String) {
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun DeveloperDetailsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate {
Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
DeveloperDetails(
address = app.developerAddress,
website = app.developerWebsite,
email = app.developerEmail
)
}
Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
DeveloperDetails(
address = app.developerAddress,
website = app.developerWebsite,
email = app.developerEmail
)
}
}

View File

@@ -13,10 +13,11 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.store.R
import com.aurora.store.compose.composable.Header
import com.aurora.store.compose.composable.Info
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.compose.theme.successColor
import com.aurora.store.compose.theme.warningColor
import com.aurora.store.data.model.Report
@@ -58,14 +59,13 @@ fun Privacy(report: Report?, onNavigateToDetailsExodus: (() -> Unit)? = null) {
)
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun PrivacyPreview() {
PreviewTemplate {
Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
Privacy(report = Report(), onNavigateToDetailsExodus = {})
}
Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
Privacy(report = Report(), onNavigateToDetailsExodus = {})
}
}

View File

@@ -25,11 +25,13 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.platform.LocalLocale
import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.compose.ui.tooling.preview.datasource.LoremIpsum
import androidx.compose.ui.util.fastForEach
import com.aurora.extensions.isWindowCompact
@@ -41,8 +43,7 @@ import com.aurora.store.compose.composable.Header
import com.aurora.store.compose.composable.details.RatingListItem
import com.aurora.store.compose.composable.details.ReviewListItem
import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import java.util.Locale
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* Composable to display reviews of the app, supposed to be used as a part
@@ -72,11 +73,11 @@ fun RatingAndReviews(
val avgRating = when {
windowAdaptiveInfo.isWindowCompact -> {
String.format(Locale.getDefault(), "%.1f", rating.average)
String.format(LocalLocale.current.platformLocale, "%.1f", rating.average)
}
else -> {
String.format(Locale.getDefault(), "%.1f / 5.0", rating.average)
String.format(LocalLocale.current.platformLocale, "%.1f / 5.0", rating.average)
}
}
@@ -142,6 +143,7 @@ fun RatingAndReviews(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun RatingAndReviewsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
@@ -153,11 +155,9 @@ private fun RatingAndReviewsPreview(@PreviewParameter(AppPreviewProvider::class)
comment = LoremIpsum(40).values.first()
)
}
PreviewTemplate {
Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
RatingAndReviews(rating = app.rating, featuredReviews = reviews)
}
Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
RatingAndReviews(rating = app.rating, featuredReviews = reviews)
}
}

View File

@@ -18,12 +18,13 @@ import androidx.compose.ui.draw.clip
import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.gplayapi.data.models.App
import com.aurora.gplayapi.data.models.Artwork
import com.aurora.store.R
import com.aurora.store.compose.composable.details.ScreenshotListItem
import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* Composable to display screenshots of the app, supposed to be used as a part
@@ -46,14 +47,13 @@ fun Screenshots(screenshots: List<Artwork>, onNavigateToScreenshot: (index: Int)
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun ScreenshotsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate {
Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
Screenshots(screenshots = app.screenshots)
}
Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
Screenshots(screenshots = app.screenshots)
}
}

View File

@@ -17,11 +17,12 @@ 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.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.gplayapi.data.models.App
import com.aurora.store.R
import com.aurora.store.compose.composable.app.TagListItem
import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.util.CommonUtil
/**
@@ -68,14 +69,13 @@ fun Tags(app: App) {
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun TagsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate {
Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
Tags(app = app)
}
Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
Tags(app = app)
}
}

View File

@@ -21,12 +21,13 @@ import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.gplayapi.data.models.App
import com.aurora.store.R
import com.aurora.store.compose.composable.Header
import com.aurora.store.compose.composable.Info
import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* Composable to display app's beta testing status, supposed to be used as a part of the
@@ -69,14 +70,13 @@ fun Testing(isSubscribed: Boolean, onTestingSubscriptionChange: (subscribe: Bool
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun TestingPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate {
Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
Testing(isSubscribed = app.testingProgram!!.isSubscribed)
}
Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
Testing(isSubscribed = app.testingProgram!!.isSubscribed)
}
}

View File

@@ -20,9 +20,10 @@ import androidx.compose.ui.Modifier
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.PreviewWrapper
import com.aurora.store.R
import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.data.model.AppState
/**
@@ -90,14 +91,13 @@ fun AppDetailsMenu(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun AppDetailsMenuPreview() {
PreviewTemplate {
TopAppBar(
actions = {
AppDetailsMenu(isFavorite = true, isExpanded = true)
}
)
}
TopAppBar(
actions = {
AppDetailsMenu(isFavorite = true, isExpanded = true)
}
)
}

View File

@@ -19,6 +19,7 @@ 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.compose.ui.tooling.preview.PreviewWrapper
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.paging.LoadState
import androidx.paging.PagingData
@@ -33,7 +34,7 @@ import com.aurora.store.compose.composable.Error
import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.composable.app.LargeAppListItem
import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.viewmodel.details.DevProfileViewModel
import com.aurora.store.viewmodel.search.SearchViewModel
import kotlin.random.Random
@@ -125,16 +126,15 @@ private fun ScreenContent(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview
@Composable
private fun DevProfileScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate {
val apps = List(10) { app.copy(id = Random.nextInt()) }
val pagedApps = MutableStateFlow(PagingData.from(apps)).collectAsLazyPagingItems()
val apps = List(10) { app.copy(id = Random.nextInt()) }
val pagedApps = MutableStateFlow(PagingData.from(apps)).collectAsLazyPagingItems()
ScreenContent(
topAppBarTitle = app.developerName,
apps = pagedApps
)
}
ScreenContent(
topAppBarTitle = app.developerName,
apps = pagedApps
)
}

View File

@@ -23,6 +23,7 @@ import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.aurora.extensions.copyToClipBoard
@@ -30,7 +31,7 @@ import com.aurora.store.R
import com.aurora.store.compose.composable.DispenserListItem
import com.aurora.store.compose.composable.Error
import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.viewmodel.dispenser.DispenserViewModel
@Composable
@@ -122,19 +123,17 @@ private fun ScreenContent(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview
@Composable
private fun DispenserScreenPreview() {
val dispensers = List(10) { "https://auroraoss.com/api/auth/$it" }
PreviewTemplate {
ScreenContent(dispensers = dispensers.toSet())
}
ScreenContent(dispensers = dispensers.toSet())
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview
@Composable
private fun DispenserScreenEmptyPreview() {
PreviewTemplate {
ScreenContent()
}
ScreenContent()
}

View File

@@ -24,6 +24,7 @@ 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.compose.ui.tooling.preview.PreviewWrapper
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.paging.LoadState
import androidx.paging.PagingData
@@ -39,7 +40,7 @@ import com.aurora.store.compose.composable.DownloadListItem
import com.aurora.store.compose.composable.Error
import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
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
@@ -177,17 +178,16 @@ private fun ScreenContent(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview
@Composable
private fun DownloadsScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate {
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)
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)
}

View File

@@ -20,8 +20,9 @@ import androidx.compose.ui.Modifier
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.PreviewWrapper
import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* Menu for the blacklist screen
@@ -65,10 +66,9 @@ fun DownloadsMenu(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun DownloadsMenuPreview() {
PreviewTemplate {
DownloadsMenu(isExpanded = true)
}
DownloadsMenu(isExpanded = true)
}

View File

@@ -24,6 +24,7 @@ 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.compose.ui.tooling.preview.PreviewWrapper
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.paging.LoadState
import androidx.paging.PagingData
@@ -39,7 +40,7 @@ import com.aurora.store.compose.composable.Error
import com.aurora.store.compose.composable.FavouriteListItem
import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.preview.FavouritePreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
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
@@ -176,17 +177,16 @@ private fun ScreenContent(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview
@Composable
private fun FavouriteScreenPreview(
@PreviewParameter(FavouritePreviewProvider::class) favourite: Favourite
) {
PreviewTemplate {
val favourites = List(10) {
favourite.copy(packageName = "${favourite.packageName}.${Random.nextInt()}")
}
val flow = MutableStateFlow(PagingData.from(favourites)).collectAsLazyPagingItems()
ScreenContent(favourites = flow)
val favourites = List(10) {
favourite.copy(packageName = "${favourite.packageName}.${Random.nextInt()}")
}
val flow = MutableStateFlow(PagingData.from(favourites)).collectAsLazyPagingItems()
ScreenContent(favourites = flow)
}

View File

@@ -20,8 +20,9 @@ import androidx.compose.ui.Modifier
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.PreviewWrapper
import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* Menu for the favourite screen
@@ -61,10 +62,9 @@ fun FavouriteMenu(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun FavouriteMenuPreview() {
PreviewTemplate {
FavouriteMenu(isExpanded = true)
}
FavouriteMenu(isExpanded = true)
}

View File

@@ -20,6 +20,7 @@ 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.compose.ui.tooling.preview.PreviewWrapper
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.paging.LoadState
import androidx.paging.PagingData
@@ -34,7 +35,7 @@ import com.aurora.store.compose.composable.Error
import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.composable.app.LargeAppListItem
import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.viewmodel.all.InstalledViewModel
import kotlin.random.Random
import kotlinx.coroutines.flow.MutableStateFlow
@@ -116,12 +117,11 @@ private fun ScreenContent(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview
@Composable
private fun InstalledScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate {
val apps = List(15) { app.copy(packageName = Random.nextInt().toString()) }
val pagedApps = MutableStateFlow(PagingData.from(apps)).collectAsLazyPagingItems()
ScreenContent(apps = pagedApps)
}
val apps = List(15) { app.copy(packageName = Random.nextInt().toString()) }
val pagedApps = MutableStateFlow(PagingData.from(apps)).collectAsLazyPagingItems()
ScreenContent(apps = pagedApps)
}

View File

@@ -20,11 +20,12 @@ import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import com.aurora.extensions.toast
import com.aurora.store.R
import com.aurora.store.compose.composable.MicroG
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.data.model.PermissionType
import com.aurora.store.data.providers.PermissionProvider
import com.aurora.store.viewmodel.onboarding.MicroGUIState
@@ -90,12 +91,11 @@ private fun ScreenContent(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun MicroGPagePreview() {
PreviewTemplate {
ScreenContent(
uiState = MicroGUIState()
)
}
ScreenContent(
uiState = MicroGUIState()
)
}

View File

@@ -30,13 +30,14 @@ import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.compose.ui.unit.dp
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import com.aurora.extensions.isWindowCompact
import com.aurora.store.R
import com.aurora.store.compose.composable.Logo
import com.aurora.store.compose.composable.PageIndicator
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.compose.ui.onboarding.navigation.OnboardingPage
import com.aurora.store.viewmodel.onboarding.OnboardingUiState
import com.aurora.store.viewmodel.onboarding.OnboardingViewModel
@@ -198,14 +199,13 @@ private fun ScreenContent(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview
@Composable
private fun OnboardingScreenPreview() {
PreviewTemplate {
ScreenContent(
pages = listOf(OnboardingPage.WELCOME, OnboardingPage.PERMISSIONS),
uiState = OnboardingUiState(),
onMicrogTOSChecked = {}
)
}
ScreenContent(
pages = listOf(OnboardingPage.WELCOME, OnboardingPage.PERMISSIONS),
uiState = OnboardingUiState(),
onMicrogTOSChecked = {}
)
}

View File

@@ -18,12 +18,13 @@ import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.compose.ui.tooling.preview.datasource.LoremIpsum
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.aurora.store.R
import com.aurora.store.compose.composable.PermissionList
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.data.model.Permission
import com.aurora.store.data.model.PermissionType
import com.aurora.store.viewmodel.commons.PermissionRationaleViewModel
@@ -71,6 +72,7 @@ private fun PageContent(
)
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun PermissionsPagePreview() {
@@ -83,9 +85,7 @@ private fun PermissionsPagePreview() {
isGranted = Random.nextBoolean()
)
}
PreviewTemplate {
PageContent(
permissions = permissions
)
}
PageContent(
permissions = permissions
)
}

View File

@@ -27,10 +27,11 @@ import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.extensions.browse
import com.aurora.store.R
import com.aurora.store.compose.composable.LinkListItem
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.compose.ui.about.AboutDialog
import com.aurora.store.data.model.Link
@@ -135,10 +136,9 @@ private fun PageContent(onAboutAurora: () -> Unit = {}) {
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun WelcomePagePreview() {
PreviewTemplate {
PageContent()
}
PageContent()
}

View File

@@ -21,12 +21,13 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.aurora.store.R
import com.aurora.store.compose.composable.InstallerListItem
import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.data.installer.AppInstaller
import com.aurora.store.data.installer.SessionInstaller
import com.aurora.store.data.model.Installer
@@ -91,12 +92,11 @@ private fun ScreenContent(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview
@Composable
private fun InstallerScreenPreview() {
PreviewTemplate {
ScreenContent(
availableInstallers = listOf(SessionInstaller.installerInfo)
)
}
ScreenContent(
availableInstallers = listOf(SessionInstaller.installerInfo)
)
}

View File

@@ -57,6 +57,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewScreenSizes
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.paging.LoadState
@@ -72,7 +73,7 @@ import com.aurora.store.compose.composable.Error
import com.aurora.store.compose.composable.SearchSuggestionListItem
import com.aurora.store.compose.composable.app.LargeAppListItem
import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.compose.ui.details.AppDetailsScreen
import com.aurora.store.data.model.SearchFilter
import com.aurora.store.viewmodel.search.SearchViewModel
@@ -439,12 +440,11 @@ private fun FilterHeader(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@PreviewScreenSizes
@Composable
private fun SearchScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate {
val apps = List(10) { app.copy(id = Random.nextInt()) }
val results = MutableStateFlow(PagingData.from(apps)).collectAsLazyPagingItems()
ScreenContent(results = results)
}
val apps = List(10) { app.copy(id = Random.nextInt()) }
val results = MutableStateFlow(PagingData.from(apps)).collectAsLazyPagingItems()
ScreenContent(results = results)
}

View File

@@ -17,12 +17,13 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.aurora.store.R
import com.aurora.store.compose.composable.DeviceListItem
import com.aurora.store.compose.composable.TextDividerComposable
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.viewmodel.spoof.SpoofViewModel
import java.util.Properties
import kotlin.random.Random
@@ -94,6 +95,7 @@ private fun PageContent(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun DevicePagePreview() {
@@ -105,12 +107,10 @@ private fun DevicePagePreview() {
setProperty("Build.PRODUCT", Random.nextInt().toString())
}
PreviewTemplate {
val defaultDevice = getDevice()
PageContent(
defaultDevice = defaultDevice,
devices = List(10) { getDevice() },
isDeviceSelected = { device -> defaultDevice == device }
)
}
val defaultDevice = getDevice()
PageContent(
defaultDevice = defaultDevice,
devices = List(10) { getDevice() },
isDeviceSelected = { device -> defaultDevice == device }
)
}

View File

@@ -17,12 +17,13 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.aurora.store.R
import com.aurora.store.compose.composable.LocaleListItem
import com.aurora.store.compose.composable.TextDividerComposable
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.viewmodel.spoof.SpoofViewModel
import java.util.Locale
@@ -89,13 +90,12 @@ private fun PageContent(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun LocalePagePreview() {
PreviewTemplate {
PageContent(
locales = Locale.getAvailableLocales().toList().filter { it.displayName.isNotBlank() },
isLocaleSelected = { locale -> locale == Locale.getDefault() }
)
}
PageContent(
locales = Locale.getAvailableLocales().toList().filter { it.displayName.isNotBlank() },
isLocaleSelected = { locale -> locale == Locale.getDefault() }
)
}

View File

@@ -20,8 +20,9 @@ import androidx.compose.ui.Modifier
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.PreviewWrapper
import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ThemePreviewProvider
/**
* Menu for the blacklist screen
@@ -61,10 +62,9 @@ fun SpoofMenu(
}
}
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true)
@Composable
private fun SpoofMenuPreview() {
PreviewTemplate {
SpoofMenu(isExpanded = true)
}
SpoofMenu(isExpanded = true)
}