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.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.asImageBitmap import androidx.compose.ui.graphics.asImageBitmap
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 androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.core.graphics.drawable.toBitmap 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 import com.aurora.store.compose.preview.ThemePreviewProvider
/** /**
* Composable for displaying package details in a list for blacklisting * Composable for displaying package details in a list for blacklisting
@@ -101,18 +101,17 @@ fun BlackListItem(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun BlackListItemPreview() { private fun BlackListItemPreview() {
PreviewTemplate { BlackListItem(
BlackListItem( icon = Color.GRAY.toDrawable().toBitmap(56, 56),
icon = Color.GRAY.toDrawable().toBitmap(56, 56), displayName = stringResource(R.string.app_name),
displayName = LocalContext.current.getString(R.string.app_name), packageName = BuildConfig.APPLICATION_ID,
packageName = BuildConfig.APPLICATION_ID, versionName = BuildConfig.VERSION_NAME,
versionName = BuildConfig.VERSION_NAME, versionCode = BuildConfig.VERSION_CODE.toLong(),
versionCode = BuildConfig.VERSION_CODE.toLong(), isChecked = true,
isChecked = true, isEnabled = false
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.semantics
import androidx.compose.ui.semantics.stateDescription import androidx.compose.ui.semantics.stateDescription
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.store.R 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 * 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) @Preview(showBackground = true)
@Composable @Composable
private fun ContainedLoadingIndicatorPreview() { 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.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 androidx.compose.ui.tooling.preview.PreviewWrapper
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.PreviewTemplate import com.aurora.store.compose.preview.ThemePreviewProvider
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
@@ -171,10 +172,9 @@ fun DownloadListItem(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun DownloadListItemPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { 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.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 androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.store.R 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 * Composable to show error message that fills all available screen
@@ -76,14 +77,13 @@ fun Error(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun ErrorPreview() { private fun ErrorPreview() {
PreviewTemplate { Error(
Error( painter = painterResource(R.drawable.ic_updates),
painter = painterResource(R.drawable.ic_updates), message = stringResource(R.string.details_no_updates),
message = stringResource(R.string.details_no_updates), actionMessage = stringResource(R.string.check_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.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 androidx.compose.ui.tooling.preview.PreviewWrapper
import coil3.compose.AsyncImage import coil3.compose.AsyncImage
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.PreviewTemplate import com.aurora.store.compose.preview.ThemePreviewProvider
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
@@ -138,10 +139,9 @@ fun FavouriteListItem(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun FavouriteListItemPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { 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.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.PreviewWrapper
import com.aurora.store.R 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 * Composable to display sticky header in list
@@ -80,14 +81,13 @@ fun Header(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun HeaderPreview() { private fun HeaderPreview() {
PreviewTemplate { Header(
Header( title = stringResource(R.string.details_privacy),
title = stringResource(R.string.details_privacy), subtitle = stringResource(R.string.exodus_powered),
subtitle = stringResource(R.string.exodus_powered), onClick = {}
onClick = {} )
)
}
} }

View File

@@ -27,10 +27,11 @@ import androidx.compose.ui.text.fromHtml
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 androidx.compose.ui.tooling.preview.PreviewWrapper
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.ThemePreviewProvider
/** /**
* Composable to show some information * Composable to show some information
@@ -81,14 +82,13 @@ fun Info(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun InfoPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun InfoPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate { Info(
Info( title = AnnotatedString(text = stringResource(R.string.details_dev_website)),
title = AnnotatedString(text = stringResource(R.string.details_dev_website)), description = AnnotatedString.fromHtml(htmlString = app.developerWebsite),
description = AnnotatedString.fromHtml(htmlString = app.developerWebsite), painter = painterResource(R.drawable.ic_network)
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.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.PreviewWrapper
import com.aurora.store.R 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.installer.SessionInstaller
import com.aurora.store.data.model.InstallerInfo import com.aurora.store.data.model.InstallerInfo
@@ -70,10 +71,9 @@ fun InstallerListItem(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun InstallerListItemPreview() { 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.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.PreviewWrapper
import coil3.compose.AsyncImage 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.compose.preview.PreviewTemplate import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.data.model.Link import com.aurora.store.data.model.Link
/** /**
@@ -91,18 +92,17 @@ fun LinkListItem(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun LinkListItemPreview() { private fun LinkListItemPreview() {
PreviewTemplate { LinkListItem(
LinkListItem( link = Link(
link = Link( id = 0,
id = 0, title = stringResource(R.string.title_about),
title = stringResource(R.string.title_about), subtitle = stringResource(R.string.about_aurora_store_subtitle),
subtitle = stringResource(R.string.about_aurora_store_subtitle), url = "https://auroraoss.com/",
url = "https://auroraoss.com/", icon = R.drawable.ic_menu_about
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.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.PreviewWrapper
import coil3.compose.AsyncImage 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.compose.preview.PreviewTemplate import com.aurora.store.compose.preview.ThemePreviewProvider
/** /**
* Composable to show Aurora Store's logo * Composable to show Aurora Store's logo
@@ -59,10 +60,9 @@ fun Logo(modifier: Modifier = Modifier) {
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun LogoPreview() { 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.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.PreviewWrapper
import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEach
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.preview.PreviewTemplate import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.data.model.Link import com.aurora.store.data.model.Link
import com.aurora.store.viewmodel.onboarding.MicroGUIState import com.aurora.store.viewmodel.onboarding.MicroGUIState
@@ -148,10 +149,9 @@ fun MicroG(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun MicroGPreview() { 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.semantics
import androidx.compose.ui.semantics.stateDescription import androidx.compose.ui.semantics.stateDescription
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate import com.aurora.store.compose.preview.ThemePreviewProvider
/** /**
* Pager indicator * Pager indicator
@@ -77,10 +78,9 @@ fun PageIndicator(modifier: Modifier = Modifier, totalPages: Int, currentPage: I
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun PageIndicatorPreview() { 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.dimensionResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.compose.ui.tooling.preview.datasource.LoremIpsum import androidx.compose.ui.tooling.preview.datasource.LoremIpsum
import androidx.core.net.toUri import androidx.core.net.toUri
import com.aurora.extensions.isTAndAbove import com.aurora.extensions.isTAndAbove
import com.aurora.extensions.toast import com.aurora.extensions.toast
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 import com.aurora.store.compose.preview.ThemePreviewProvider
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
@@ -159,6 +160,7 @@ fun PermissionList(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun PermissionListPreview() { private fun PermissionListPreview() {
@@ -171,7 +173,5 @@ private fun PermissionListPreview() {
isGranted = Random.nextBoolean() 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.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.PreviewWrapper
import com.aurora.store.R 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.Permission
import com.aurora.store.data.model.PermissionType import com.aurora.store.data.model.PermissionType
@@ -70,17 +71,16 @@ fun PermissionListItem(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun PermissionListItemPreview() { private fun PermissionListItemPreview() {
PreviewTemplate { PermissionListItem(
PermissionListItem( permission = Permission(
permission = Permission( PermissionType.STORAGE_MANAGER,
PermissionType.STORAGE_MANAGER, stringResource(R.string.onboarding_permission_esm),
stringResource(R.string.onboarding_permission_esm), stringResource(R.string.onboarding_permission_esa_desc),
stringResource(R.string.onboarding_permission_esa_desc), false
false
)
) )
} )
} }

View File

@@ -24,12 +24,13 @@ import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
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.PreviewWrapper
import coil3.compose.AsyncImage import coil3.compose.AsyncImage
import coil3.request.ImageRequest 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 import com.aurora.store.compose.preview.ThemePreviewProvider
/** /**
* Composable for displaying search suggestions in a list * Composable for displaying search suggestions in a list
@@ -96,12 +97,11 @@ fun SearchSuggestionListItem(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun SearchSuggestionListItemPreview() { private fun SearchSuggestionListItemPreview() {
PreviewTemplate { SearchSuggestionListItem(
SearchSuggestionListItem( searchSuggestEntry = SearchSuggestEntry.getDefaultInstance()
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.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.PreviewWrapper
import com.aurora.store.R 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 * 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) @Preview(showBackground = true)
@Composable @Composable
private fun TextDividerComposablePreview() { 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.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.store.R 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 * 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) @Preview(showBackground = true)
@Composable @Composable
private fun TopAppBarPreview() { private fun TopAppBarPreview() {
PreviewTemplate { TopAppBar(
TopAppBar( title = stringResource(R.string.title_about),
title = stringResource(R.string.title_about), onNavigateUp = {}
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.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewParameterProvider import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import androidx.compose.ui.tooling.preview.PreviewWrapper
import coil3.compose.AsyncImage import coil3.compose.AsyncImage
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.PreviewTemplate import com.aurora.store.compose.preview.ThemePreviewProvider
/** /**
* Composable to show icon for an app that can be animated to also show install progress * 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) get() = sequenceOf(0F, 50F)
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun AnimatedAppIconPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun AnimatedAppIconPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate { AnimatedAppIcon(
AnimatedAppIcon( modifier = Modifier.requiredSize(dimensionResource(R.dimen.icon_size_large)),
modifier = Modifier.requiredSize(dimensionResource(R.dimen.icon_size_large)), iconUrl = app.iconArtwork.url
iconUrl = app.iconArtwork.url )
)
}
} }
@PreviewWrapper(ThemePreviewProvider::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) {
PreviewTemplate { AnimatedAppIcon(
AnimatedAppIcon( modifier = Modifier.requiredSize(dimensionResource(R.dimen.icon_size_large)),
modifier = Modifier.requiredSize(dimensionResource(R.dimen.icon_size_large)), iconUrl = "",
iconUrl = "", inProgress = true,
inProgress = true, progress = progress
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.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 androidx.compose.ui.tooling.preview.PreviewWrapper
import coil3.compose.AsyncImage import coil3.compose.AsyncImage
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.PreviewTemplate import com.aurora.store.compose.preview.ThemePreviewProvider
/** /**
* Composable for displaying minimal app details in a horizontal-scrollable list * 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) @Preview(showBackground = true)
@Composable @Composable
private fun AppListItemPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { 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.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 androidx.compose.ui.tooling.preview.PreviewWrapper
import coil3.compose.AsyncImage import coil3.compose.AsyncImage
import coil3.request.ImageRequest import coil3.request.ImageRequest
import coil3.request.crossfade import coil3.request.crossfade
@@ -31,7 +32,7 @@ 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.PreviewTemplate import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.util.CommonUtil import com.aurora.store.util.CommonUtil
/** /**
@@ -43,6 +44,28 @@ import com.aurora.store.util.CommonUtil
*/ */
@Composable @Composable
fun LargeAppListItem(modifier: Modifier = Modifier, app: App, onClick: () -> Unit = {}) { 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( Row(
modifier = modifier modifier = modifier
.fillMaxWidth() .fillMaxWidth()
@@ -81,32 +104,9 @@ fun LargeAppListItem(modifier: Modifier = Modifier, app: App, onClick: () -> Uni
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
fun LargeAppListItemPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { fun LargeAppListItemPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate { LargeAppListItem(app = app)
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))
}
} }

View File

@@ -15,8 +15,9 @@ import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.store.R 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 * Composable to show a tag related to an app
@@ -41,13 +42,12 @@ fun TagListItem(
) )
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun TagListItemPreview() { private fun TagListItemPreview() {
PreviewTemplate { TagListItem(
TagListItem( label = stringResource(R.string.details_free),
label = stringResource(R.string.details_free), painter = painterResource(R.drawable.ic_paid)
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.res.dimensionResource
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
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.preview.PreviewTemplate import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.data.model.ExodusTracker import com.aurora.store.data.model.ExodusTracker
/** /**
@@ -60,17 +61,16 @@ fun ExodusListItem(modifier: Modifier = Modifier, tracker: ExodusTracker) {
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun ExodusListItemPreview() { private fun ExodusListItemPreview() {
PreviewTemplate { ExodusListItem(
ExodusListItem( tracker = ExodusTracker(
tracker = ExodusTracker( name = "Google Analytics",
name = "Google Analytics", signature = "com.google.android.apps.analytics.|com.google.analytics.",
signature = "com.google.android.apps.analytics.|com.google.analytics.", date = "2017-09-24",
date = "2017-09-24", url = "http://www.google.com/analytics/"
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.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 androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.store.R 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 * 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) @Preview(showBackground = true)
@Composable @Composable
private fun RatingListItemPreview() { 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.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 androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.compose.ui.viewinterop.AndroidView import androidx.compose.ui.viewinterop.AndroidView
import coil3.compose.AsyncImage import coil3.compose.AsyncImage
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.ThemePreviewProvider
/** /**
* Composable for viewing a review about an app * 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) @Preview(showBackground = true)
@Composable @Composable
private fun ReviewListItemPreview(@PreviewParameter(ReviewPreviewProvider::class) review: Review) { 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.platform.LocalContext
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 androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.compose.collectAsStateWithLifecycle
import coil3.compose.AsyncImagePainter import coil3.compose.AsyncImagePainter
import coil3.compose.rememberAsyncImagePainter import coil3.compose.rememberAsyncImagePainter
@@ -23,7 +24,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.PreviewTemplate import com.aurora.store.compose.preview.ThemePreviewProvider
/** /**
* Composable to display a screenshot of an app * Composable to display a screenshot of an app
@@ -58,10 +59,9 @@ fun ScreenshotListItem(modifier: Modifier = Modifier, url: String) {
) )
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview @Preview
@Composable @Composable
private fun ScreenshotListItemPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { 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.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 androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.store.R 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 * Dialog for displaying information about Aurora Store
@@ -34,10 +35,9 @@ fun AboutDialog(onDismiss: () -> Unit = {}) {
) )
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview @Preview
@Composable @Composable
private fun AboutDialogPreview() { 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.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.PreviewWrapper
import coil3.compose.AsyncImage import coil3.compose.AsyncImage
import coil3.request.ImageRequest import coil3.request.ImageRequest
import com.aurora.extensions.browse 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.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.compose.preview.ThemePreviewProvider
import com.aurora.store.data.model.Link import com.aurora.store.data.model.Link
@Composable @Composable
@@ -164,10 +165,9 @@ private fun BrandHeader() {
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview @Preview
@Composable @Composable
private fun AboutScreenPreview() { 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.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.PreviewWrapper
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import coil3.compose.AsyncImage import coil3.compose.AsyncImage
import coil3.request.ImageRequest import coil3.request.ImageRequest
@@ -47,7 +48,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.compose.preview.ThemePreviewProvider
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
@@ -204,10 +205,9 @@ private fun AssistHeader() {
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview @Preview
@Composable @Composable
private fun AccountsScreenPreview() { 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.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 androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate import com.aurora.store.compose.preview.ThemePreviewProvider
/** /**
* Dialog for confirming log out * Dialog for confirming log out
@@ -40,10 +41,9 @@ fun LogoutDialog(onConfirm: () -> Unit = {}, onDismiss: () -> Unit = {}) {
) )
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview @Preview
@Composable @Composable
private fun LogoutDialogPreview() { 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.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.PreviewWrapper
import androidx.core.content.pm.PackageInfoCompat import androidx.core.content.pm.PackageInfoCompat
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.compose.collectAsStateWithLifecycle
@@ -46,7 +47,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.preview.ThemePreviewProvider
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
@@ -241,10 +242,9 @@ private fun ScreenContent(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview @Preview
@Composable @Composable
private fun BlacklistScreenPreview() { 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.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate import com.aurora.store.compose.preview.ThemePreviewProvider
/** /**
* Menu for the blacklist screen * Menu for the blacklist screen
@@ -69,10 +70,9 @@ fun BlacklistMenu(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun BlacklistMenuPreview() { 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.Modifier
import androidx.compose.ui.res.pluralStringResource import androidx.compose.ui.res.pluralStringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.compose.ui.tooling.preview.datasource.LoremIpsum import androidx.compose.ui.tooling.preview.datasource.LoremIpsum
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.compose.collectAsStateWithLifecycle
@@ -21,7 +22,7 @@ import com.aurora.extensions.adaptiveNavigationIcon
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composable.PermissionList import com.aurora.store.compose.composable.PermissionList
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.compose.preview.ThemePreviewProvider
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.viewmodel.commons.PermissionRationaleViewModel import com.aurora.store.viewmodel.commons.PermissionRationaleViewModel
@@ -75,6 +76,7 @@ private fun ScreenContent(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview @Preview
@Composable @Composable
private fun PermissionsScreenPreview() { private fun PermissionsScreenPreview() {
@@ -87,7 +89,5 @@ private fun PermissionsScreenPreview() {
isGranted = Random.nextBoolean() 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.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.paging.LoadState import androidx.paging.LoadState
import androidx.paging.PagingData 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.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.PreviewTemplate import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.viewmodel.browse.StreamBrowseViewModel import com.aurora.store.viewmodel.browse.StreamBrowseViewModel
import kotlin.random.Random import kotlin.random.Random
import kotlin.uuid.Uuid import kotlin.uuid.Uuid
@@ -110,14 +111,13 @@ private fun ScreenContent(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview @Preview
@Composable @Composable
private fun StreamBrowseScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun StreamBrowseScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
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() ScreenContent(
ScreenContent( apps = pagedApps
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.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewScreenSizes import androidx.compose.ui.tooling.preview.PreviewScreenSizes
import androidx.compose.ui.tooling.preview.PreviewWrapper
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
@@ -59,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.PreviewTemplate import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.compose.ui.commons.PermissionRationaleScreen 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.Actions
import com.aurora.store.compose.ui.details.composable.Changelog import com.aurora.store.compose.ui.details.composable.Changelog
@@ -526,30 +527,27 @@ private fun ScreenContentApp(
) )
} }
@PreviewWrapper(ThemePreviewProvider::class)
@PreviewScreenSizes @PreviewScreenSizes
@Composable @Composable
private fun AppDetailsScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun AppDetailsScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate { ScreenContentApp(
ScreenContentApp( app = app,
app = app, isAnonymous = false,
isAnonymous = false, suggestions = List(10) { app.copy(id = Random.nextInt()) }
suggestions = List(10) { app.copy(id = Random.nextInt()) } )
)
}
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview @Preview
@Composable @Composable
private fun AppDetailsScreenPreviewLoading() { private fun AppDetailsScreenPreviewLoading() {
PreviewTemplate { ScreenContentLoading()
ScreenContentLoading()
}
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview @Preview
@Composable @Composable
private fun AppDetailsScreenPreviewError() { 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.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewWrapper
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 com.aurora.Constants.EXODUS_REPORT_URL 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.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.compose.preview.ThemePreviewProvider
import com.aurora.store.data.model.ExodusTracker import com.aurora.store.data.model.ExodusTracker
import com.aurora.store.data.model.Report import com.aurora.store.data.model.Report
import com.aurora.store.viewmodel.details.AppDetailsViewModel import com.aurora.store.viewmodel.details.AppDetailsViewModel
@@ -178,18 +179,16 @@ private fun ScreenContentError(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview @Preview
@Composable @Composable
private fun ExodusScreenPreviewReport(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun ExodusScreenPreviewReport(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate { ScreenContentReport(topAppBarTitle = app.displayName)
ScreenContentReport(topAppBarTitle = app.displayName)
}
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview @Preview
@Composable @Composable
private fun ExodusScreenPreviewError(@PreviewParameter(AppPreviewProvider::class) app: App) { 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.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 androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.core.text.isDigitsOnly import androidx.core.text.isDigitsOnly
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel 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.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.compose.preview.ThemePreviewProvider
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
@@ -213,13 +214,12 @@ private fun ScreenContent(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview @Preview
@Composable @Composable
private fun ManualDownloadScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun ManualDownloadScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate { ScreenContent(
ScreenContent( topAppBarTitle = app.displayName,
topAppBarTitle = app.displayName, currentVersionCode = app.versionCode
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.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 androidx.compose.ui.tooling.preview.PreviewWrapper
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 com.aurora.extensions.adaptiveNavigationIcon 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.MicroG
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.compose.preview.ThemePreviewProvider
import com.aurora.store.data.model.PermissionType import com.aurora.store.data.model.PermissionType
import com.aurora.store.data.providers.PermissionProvider import com.aurora.store.data.providers.PermissionProvider
import com.aurora.store.viewmodel.details.AppDetailsViewModel import com.aurora.store.viewmodel.details.AppDetailsViewModel
@@ -151,10 +152,9 @@ private fun ScreenContent(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview @Preview
@Composable @Composable
private fun MicroGScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { 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.Composable
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalLocale
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.AnnotatedString import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.fromHtml import androidx.compose.ui.text.fromHtml
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 androidx.compose.ui.tooling.preview.PreviewWrapper
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 com.aurora.extensions.adaptiveNavigationIcon 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.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.PreviewTemplate import com.aurora.store.compose.preview.ThemePreviewProvider
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
@Composable @Composable
fun MoreScreen( fun MoreScreen(
@@ -174,10 +175,10 @@ private fun AppInfoMore(app: App) {
Info( Info(
title = AnnotatedString( title = AnnotatedString(
text = title.replace("_", " ") text = title.replace("_", " ")
.lowercase(Locale.getDefault()) .lowercase(LocalLocale.current.platformLocale)
.replaceFirstChar { .replaceFirstChar {
if (it.isLowerCase()) { if (it.isLowerCase()) {
it.titlecase(Locale.getDefault()) it.titlecase(LocalLocale.current.platformLocale)
} else { } else {
it.toString() it.toString()
} }
@@ -188,10 +189,9 @@ private fun AppInfoMore(app: App) {
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview @Preview
@Composable @Composable
private fun MoreScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { 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.runtime.getValue
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.platform.LocalLocale
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.AnnotatedString import androidx.compose.ui.text.AnnotatedString
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 androidx.compose.ui.tooling.preview.PreviewWrapper
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 com.aurora.extensions.adaptiveNavigationIcon 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.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.compose.preview.ThemePreviewProvider
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
@Composable @Composable
fun PermissionScreen( fun PermissionScreen(
@@ -99,7 +100,7 @@ private fun ScreenContent(
.toString() .toString()
.replaceFirstChar { .replaceFirstChar {
if (it.isLowerCase()) { if (it.isLowerCase()) {
it.titlecase(Locale.getDefault()) it.titlecase(LocalLocale.current.platformLocale)
} else { } else {
it.toString() it.toString()
} }
@@ -115,12 +116,11 @@ private fun ScreenContent(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview @Preview
@Composable @Composable
private fun PermissionScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun PermissionScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate { ScreenContent(
ScreenContent( topAppBarTitle = app.displayName
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.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewWrapper
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.paging.LoadState 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.Error
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.PreviewTemplate
import com.aurora.store.compose.preview.ReviewPreviewProvider 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.AppDetailsViewModel
import com.aurora.store.viewmodel.details.ReviewViewModel import com.aurora.store.viewmodel.details.ReviewViewModel
import kotlin.random.Random import kotlin.random.Random
@@ -178,13 +179,12 @@ private fun FilterHeader(onClick: (filter: Review.Filter) -> Unit) {
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview @Preview
@Composable @Composable
private fun ReviewScreenPreview(@PreviewParameter(ReviewPreviewProvider::class) review: Review) { private fun ReviewScreenPreview(@PreviewParameter(ReviewPreviewProvider::class) review: Review) {
PreviewTemplate { val reviews = List(10) { review.copy(commentId = Random.nextInt().toString()) }
val reviews = List(10) { review.copy(commentId = Random.nextInt().toString()) } val reviewsFlow = MutableStateFlow(PagingData.from(reviews)).collectAsLazyPagingItems()
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.platform.LocalContext
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
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 com.aurora.extensions.adaptiveNavigationIcon 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.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.compose.preview.ThemePreviewProvider
import com.aurora.store.viewmodel.details.AppDetailsViewModel import com.aurora.store.viewmodel.details.AppDetailsViewModel
@Composable @Composable
@@ -92,12 +93,11 @@ private fun ScreenContent(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview @Preview
@Composable @Composable
private fun ScreenshotScreenPreview() { private fun ScreenshotScreenPreview() {
PreviewTemplate { ScreenContent(
ScreenContent( topAppBarTitle = stringResource(R.string.app_name)
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.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.PreviewWrapper
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 import com.aurora.store.compose.preview.ThemePreviewProvider
/** /**
* 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
@@ -81,17 +82,16 @@ fun Actions(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun ActionsPreview() { private fun ActionsPreview() {
PreviewTemplate { Column(
Column( verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium)) ) {
) { Actions(
Actions( primaryActionDisplayName = stringResource(R.string.action_install),
primaryActionDisplayName = stringResource(R.string.action_install), secondaryActionDisplayName = stringResource(R.string.title_manual_download)
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.text.fromHtml
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 androidx.compose.ui.tooling.preview.PreviewWrapper
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.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 import com.aurora.store.compose.preview.ThemePreviewProvider
/** /**
* Composable to display app changelog, supposed to be used as a part * 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) @Preview(showBackground = true)
@Composable @Composable
private fun ChangelogPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun ChangelogPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate { Column(
Column( verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium)) ) {
) { Changelog(changelog = app.changes)
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.res.stringResource
import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
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.preview.ThemePreviewProvider
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
@@ -76,14 +77,13 @@ fun Compatibility(needsGms: Boolean, plexusScores: Scores? = null) {
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun CompatibilityPreview() { private fun CompatibilityPreview() {
PreviewTemplate { Column(
Column( verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium)) ) {
) { Compatibility(needsGms = true)
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.text.AnnotatedString
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 androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.extensions.browse import com.aurora.extensions.browse
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.gplayapi.data.models.datasafety.Entry 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.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 import com.aurora.store.compose.preview.ThemePreviewProvider
/** /**
* 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
@@ -80,31 +81,30 @@ fun DataSafety(report: Report, privacyPolicyUrl: String) {
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun DataSafetyPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun DataSafetyPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate { Column(
Column( verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium)) ) {
) { DataSafety(
DataSafety( privacyPolicyUrl = app.privacyPolicyUrl,
privacyPolicyUrl = app.privacyPolicyUrl, report = Report(
report = Report( packageName = app.packageName,
packageName = app.packageName, entries = listOf(
entries = listOf( Entry(
Entry( type = EntryType.DATA_COLLECTED,
type = EntryType.DATA_COLLECTED, name = String(),
name = String(), description = String()
description = String() ),
), Entry(
Entry( type = EntryType.DATA_SHARED,
type = EntryType.DATA_SHARED, name = String(),
name = String(), description = 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.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 androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.LayoutDirection
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.PreviewTemplate import com.aurora.store.compose.preview.ThemePreviewProvider
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
@@ -156,14 +157,13 @@ fun Details(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun DetailsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun DetailsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate { Column(
Column( verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium)) ) {
) { Details(app = app)
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.text.fromHtml
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 androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.extensions.browse import com.aurora.extensions.browse
import com.aurora.extensions.copyToClipBoard import com.aurora.extensions.copyToClipBoard
import com.aurora.extensions.mailTo 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.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 import com.aurora.store.compose.preview.ThemePreviewProvider
/** /**
* 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
@@ -68,18 +69,17 @@ fun DeveloperDetails(address: String, website: String, email: String) {
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun DeveloperDetailsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun DeveloperDetailsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate { Column(
Column( verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium)) ) {
) { DeveloperDetails(
DeveloperDetails( address = app.developerAddress,
address = app.developerAddress, website = app.developerWebsite,
website = app.developerWebsite, email = app.developerEmail
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.res.stringResource
import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
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.preview.ThemePreviewProvider
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,14 +59,13 @@ fun Privacy(report: Report?, onNavigateToDetailsExodus: (() -> Unit)? = null) {
) )
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun PrivacyPreview() { private fun PrivacyPreview() {
PreviewTemplate { Column(
Column( verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium)) ) {
) { Privacy(report = Report(), onNavigateToDetailsExodus = {})
Privacy(report = Report(), onNavigateToDetailsExodus = {})
}
} }
} }

View File

@@ -25,11 +25,13 @@ 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.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.platform.LocalLocale
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 androidx.compose.ui.tooling.preview.PreviewParameter 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.tooling.preview.datasource.LoremIpsum
import androidx.compose.ui.util.fastForEach import androidx.compose.ui.util.fastForEach
import com.aurora.extensions.isWindowCompact 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.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 com.aurora.store.compose.preview.ThemePreviewProvider
import java.util.Locale
/** /**
* Composable to display reviews of the app, supposed to be used as a part * Composable to display reviews of the app, supposed to be used as a part
@@ -72,11 +73,11 @@ fun RatingAndReviews(
val avgRating = when { val avgRating = when {
windowAdaptiveInfo.isWindowCompact -> { windowAdaptiveInfo.isWindowCompact -> {
String.format(Locale.getDefault(), "%.1f", rating.average) String.format(LocalLocale.current.platformLocale, "%.1f", rating.average)
} }
else -> { 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) @Preview(showBackground = true)
@Composable @Composable
private fun RatingAndReviewsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun RatingAndReviewsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
@@ -153,11 +155,9 @@ private fun RatingAndReviewsPreview(@PreviewParameter(AppPreviewProvider::class)
comment = LoremIpsum(40).values.first() comment = LoremIpsum(40).values.first()
) )
} }
PreviewTemplate { Column(
Column( verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium)) ) {
) { RatingAndReviews(rating = app.rating, featuredReviews = reviews)
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.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 androidx.compose.ui.tooling.preview.PreviewWrapper
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.PreviewTemplate import com.aurora.store.compose.preview.ThemePreviewProvider
/** /**
* 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
@@ -46,14 +47,13 @@ fun Screenshots(screenshots: List<Artwork>, onNavigateToScreenshot: (index: Int)
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun ScreenshotsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun ScreenshotsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate { Column(
Column( verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium)) ) {
) { Screenshots(screenshots = app.screenshots)
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.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.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.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.compose.preview.ThemePreviewProvider
import com.aurora.store.util.CommonUtil import com.aurora.store.util.CommonUtil
/** /**
@@ -68,14 +69,13 @@ fun Tags(app: App) {
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun TagsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun TagsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate { Column(
Column( verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium)) ) {
) { Tags(app = app)
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.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 androidx.compose.ui.tooling.preview.PreviewWrapper
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.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 import com.aurora.store.compose.preview.ThemePreviewProvider
/** /**
* 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
@@ -69,14 +70,13 @@ fun Testing(isSubscribed: Boolean, onTestingSubscriptionChange: (subscribe: Bool
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun TestingPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun TestingPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate { Column(
Column( verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium)) ) {
) { Testing(isSubscribed = app.testingProgram!!.isSubscribed)
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.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
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.compose.preview.ThemePreviewProvider
import com.aurora.store.data.model.AppState import com.aurora.store.data.model.AppState
/** /**
@@ -90,14 +91,13 @@ fun AppDetailsMenu(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun AppDetailsMenuPreview() { private fun AppDetailsMenuPreview() {
PreviewTemplate { TopAppBar(
TopAppBar( actions = {
actions = { AppDetailsMenu(isFavorite = true, isExpanded = true)
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.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.paging.LoadState import androidx.paging.LoadState
import androidx.paging.PagingData 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.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.PreviewTemplate import com.aurora.store.compose.preview.ThemePreviewProvider
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 kotlin.random.Random import kotlin.random.Random
@@ -125,16 +126,15 @@ private fun ScreenContent(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview @Preview
@Composable @Composable
private fun DevProfileScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun DevProfileScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
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()
ScreenContent( ScreenContent(
topAppBarTitle = app.developerName, topAppBarTitle = app.developerName,
apps = pagedApps 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.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
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 com.aurora.extensions.copyToClipBoard 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.DispenserListItem
import com.aurora.store.compose.composable.Error import com.aurora.store.compose.composable.Error
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.compose.preview.ThemePreviewProvider
import com.aurora.store.viewmodel.dispenser.DispenserViewModel import com.aurora.store.viewmodel.dispenser.DispenserViewModel
@Composable @Composable
@@ -122,19 +123,17 @@ private fun ScreenContent(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview @Preview
@Composable @Composable
private fun DispenserScreenPreview() { private fun DispenserScreenPreview() {
val dispensers = List(10) { "https://auroraoss.com/api/auth/$it" } val dispensers = List(10) { "https://auroraoss.com/api/auth/$it" }
PreviewTemplate { ScreenContent(dispensers = dispensers.toSet())
ScreenContent(dispensers = dispensers.toSet())
}
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview @Preview
@Composable @Composable
private fun DispenserScreenEmptyPreview() { 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.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.paging.LoadState import androidx.paging.LoadState
import androidx.paging.PagingData 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.Error
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.compose.preview.ThemePreviewProvider
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
@@ -177,17 +178,16 @@ private fun ScreenContent(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview @Preview
@Composable @Composable
private fun DownloadsScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun DownloadsScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
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(), status = DownloadStatus.entries.random()
status = DownloadStatus.entries.random() )
)
}
val pagedDownloads = MutableStateFlow(PagingData.from(downloads)).collectAsLazyPagingItems()
ScreenContent(downloads = pagedDownloads)
} }
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.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate import com.aurora.store.compose.preview.ThemePreviewProvider
/** /**
* Menu for the blacklist screen * Menu for the blacklist screen
@@ -65,10 +66,9 @@ fun DownloadsMenu(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun DownloadsMenuPreview() { 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.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.paging.LoadState import androidx.paging.LoadState
import androidx.paging.PagingData 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.FavouriteListItem
import com.aurora.store.compose.composable.TopAppBar import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.preview.FavouritePreviewProvider 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.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
@@ -176,17 +177,16 @@ private fun ScreenContent(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview @Preview
@Composable @Composable
private fun FavouriteScreenPreview( private fun FavouriteScreenPreview(
@PreviewParameter(FavouritePreviewProvider::class) favourite: Favourite @PreviewParameter(FavouritePreviewProvider::class) favourite: Favourite
) { ) {
PreviewTemplate { val favourites = List(10) {
val favourites = List(10) { favourite.copy(packageName = "${favourite.packageName}.${Random.nextInt()}")
favourite.copy(packageName = "${favourite.packageName}.${Random.nextInt()}")
}
val flow = MutableStateFlow(PagingData.from(favourites)).collectAsLazyPagingItems()
ScreenContent(favourites = flow)
} }
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.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate import com.aurora.store.compose.preview.ThemePreviewProvider
/** /**
* Menu for the favourite screen * Menu for the favourite screen
@@ -61,10 +62,9 @@ fun FavouriteMenu(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun FavouriteMenuPreview() { 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.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
import androidx.paging.LoadState import androidx.paging.LoadState
import androidx.paging.PagingData 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.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.PreviewTemplate import com.aurora.store.compose.preview.ThemePreviewProvider
import com.aurora.store.viewmodel.all.InstalledViewModel import com.aurora.store.viewmodel.all.InstalledViewModel
import kotlin.random.Random import kotlin.random.Random
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
@@ -116,12 +117,11 @@ private fun ScreenContent(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview @Preview
@Composable @Composable
private fun InstalledScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun InstalledScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate { val apps = List(15) { app.copy(packageName = Random.nextInt().toString()) }
val apps = List(15) { app.copy(packageName = Random.nextInt().toString()) } val pagedApps = MutableStateFlow(PagingData.from(apps)).collectAsLazyPagingItems()
val pagedApps = MutableStateFlow(PagingData.from(apps)).collectAsLazyPagingItems() ScreenContent(apps = pagedApps)
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.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.PreviewWrapper
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
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.MicroG 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.model.PermissionType
import com.aurora.store.data.providers.PermissionProvider import com.aurora.store.data.providers.PermissionProvider
import com.aurora.store.viewmodel.onboarding.MicroGUIState import com.aurora.store.viewmodel.onboarding.MicroGUIState
@@ -90,12 +91,11 @@ private fun ScreenContent(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun MicroGPagePreview() { private fun MicroGPagePreview() {
PreviewTemplate { ScreenContent(
ScreenContent( uiState = MicroGUIState()
uiState = MicroGUIState() )
)
}
} }

View File

@@ -30,13 +30,14 @@ 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 androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
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.composable.Logo import com.aurora.store.compose.composable.Logo
import com.aurora.store.compose.composable.PageIndicator 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.compose.ui.onboarding.navigation.OnboardingPage
import com.aurora.store.viewmodel.onboarding.OnboardingUiState import com.aurora.store.viewmodel.onboarding.OnboardingUiState
import com.aurora.store.viewmodel.onboarding.OnboardingViewModel import com.aurora.store.viewmodel.onboarding.OnboardingViewModel
@@ -198,14 +199,13 @@ private fun ScreenContent(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview @Preview
@Composable @Composable
private fun OnboardingScreenPreview() { private fun OnboardingScreenPreview() {
PreviewTemplate { ScreenContent(
ScreenContent( pages = listOf(OnboardingPage.WELCOME, OnboardingPage.PERMISSIONS),
pages = listOf(OnboardingPage.WELCOME, OnboardingPage.PERMISSIONS), uiState = OnboardingUiState(),
uiState = OnboardingUiState(), onMicrogTOSChecked = {}
onMicrogTOSChecked = {} )
)
}
} }

View File

@@ -18,12 +18,13 @@ 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 androidx.compose.ui.tooling.preview.PreviewWrapper
import androidx.compose.ui.tooling.preview.datasource.LoremIpsum import androidx.compose.ui.tooling.preview.datasource.LoremIpsum
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 com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composable.PermissionList 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.Permission
import com.aurora.store.data.model.PermissionType import com.aurora.store.data.model.PermissionType
import com.aurora.store.viewmodel.commons.PermissionRationaleViewModel import com.aurora.store.viewmodel.commons.PermissionRationaleViewModel
@@ -71,6 +72,7 @@ private fun PageContent(
) )
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun PermissionsPagePreview() { private fun PermissionsPagePreview() {
@@ -83,9 +85,7 @@ private fun PermissionsPagePreview() {
isGranted = Random.nextBoolean() isGranted = Random.nextBoolean()
) )
} }
PreviewTemplate { PageContent(
PageContent( permissions = permissions
permissions = permissions )
)
}
} }

View File

@@ -27,10 +27,11 @@ 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 androidx.compose.ui.tooling.preview.PreviewWrapper
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.LinkListItem 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.compose.ui.about.AboutDialog
import com.aurora.store.data.model.Link import com.aurora.store.data.model.Link
@@ -135,10 +136,9 @@ private fun PageContent(onAboutAurora: () -> Unit = {}) {
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun WelcomePagePreview() { 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.dimensionResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
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 com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composable.InstallerListItem import com.aurora.store.compose.composable.InstallerListItem
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.compose.preview.ThemePreviewProvider
import com.aurora.store.data.installer.AppInstaller import com.aurora.store.data.installer.AppInstaller
import com.aurora.store.data.installer.SessionInstaller import com.aurora.store.data.installer.SessionInstaller
import com.aurora.store.data.model.Installer import com.aurora.store.data.model.Installer
@@ -91,12 +92,11 @@ private fun ScreenContent(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview @Preview
@Composable @Composable
private fun InstallerScreenPreview() { private fun InstallerScreenPreview() {
PreviewTemplate { ScreenContent(
ScreenContent( availableInstallers = listOf(SessionInstaller.installerInfo)
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.text.style.TextOverflow
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewScreenSizes import androidx.compose.ui.tooling.preview.PreviewScreenSizes
import androidx.compose.ui.tooling.preview.PreviewWrapper
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.paging.LoadState 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.SearchSuggestionListItem
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.PreviewTemplate import com.aurora.store.compose.preview.ThemePreviewProvider
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
@@ -439,12 +440,11 @@ private fun FilterHeader(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@PreviewScreenSizes @PreviewScreenSizes
@Composable @Composable
private fun SearchScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun SearchScreenPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate { val apps = List(10) { app.copy(id = Random.nextInt()) }
val apps = List(10) { app.copy(id = Random.nextInt()) } val results = MutableStateFlow(PagingData.from(apps)).collectAsLazyPagingItems()
val results = MutableStateFlow(PagingData.from(apps)).collectAsLazyPagingItems() ScreenContent(results = results)
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.dimensionResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
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 com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composable.DeviceListItem import com.aurora.store.compose.composable.DeviceListItem
import com.aurora.store.compose.composable.TextDividerComposable 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 com.aurora.store.viewmodel.spoof.SpoofViewModel
import java.util.Properties import java.util.Properties
import kotlin.random.Random import kotlin.random.Random
@@ -94,6 +95,7 @@ private fun PageContent(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun DevicePagePreview() { private fun DevicePagePreview() {
@@ -105,12 +107,10 @@ private fun DevicePagePreview() {
setProperty("Build.PRODUCT", Random.nextInt().toString()) setProperty("Build.PRODUCT", Random.nextInt().toString())
} }
PreviewTemplate { val defaultDevice = getDevice()
val defaultDevice = getDevice() PageContent(
PageContent( defaultDevice = defaultDevice,
defaultDevice = defaultDevice, devices = List(10) { getDevice() },
devices = List(10) { getDevice() }, isDeviceSelected = { device -> defaultDevice == device }
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.dimensionResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
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 com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composable.LocaleListItem import com.aurora.store.compose.composable.LocaleListItem
import com.aurora.store.compose.composable.TextDividerComposable 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 com.aurora.store.viewmodel.spoof.SpoofViewModel
import java.util.Locale import java.util.Locale
@@ -89,13 +90,12 @@ private fun PageContent(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun LocalePagePreview() { private fun LocalePagePreview() {
PreviewTemplate { PageContent(
PageContent( locales = Locale.getAvailableLocales().toList().filter { it.displayName.isNotBlank() },
locales = Locale.getAvailableLocales().toList().filter { it.displayName.isNotBlank() }, isLocaleSelected = { locale -> locale == Locale.getDefault() }
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.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewWrapper
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.preview.PreviewTemplate import com.aurora.store.compose.preview.ThemePreviewProvider
/** /**
* Menu for the blacklist screen * Menu for the blacklist screen
@@ -61,10 +62,9 @@ fun SpoofMenu(
} }
} }
@PreviewWrapper(ThemePreviewProvider::class)
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun SpoofMenuPreview() { private fun SpoofMenuPreview() {
PreviewTemplate { SpoofMenu(isExpanded = true)
SpoofMenu(isExpanded = true)
}
} }